tfhe 1.0.0 → 1.0.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.
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
  <hr/>
11
11
 
12
12
  <p align="center">
13
- <a href="https://docs.zama.ai/tfhe-rs"> 📒 Documentation</a> | <a href="https://zama.ai/community"> 💛 Community support</a> | <a href="https://github.com/zama-ai/awesome-zama"> 📚 FHE resources by Zama</a>
13
+ <a href="https://github.com/zama-ai/tfhe-rs-handbook/blob/main/tfhe-rs-handbook.pdf"> 📃 Read Handbook</a> |<a href="https://docs.zama.ai/tfhe-rs"> 📒 Documentation</a> | <a href="https://zama.ai/community"> 💛 Community support</a> | <a href="https://github.com/zama-ai/awesome-zama"> 📚 FHE resources by Zama</a>
14
14
  </p>
15
15
 
16
16
 
@@ -67,6 +67,9 @@ production-ready library for all the advanced features of TFHE.
67
67
 
68
68
  ## Getting started
69
69
 
70
+ > [!Important]
71
+ > **TFHE-rs** released its first stable version v1.0.0 in February 2025, stabilizing the high-level API for the x86 CPU backend.
72
+
70
73
  ### Cargo.toml configuration
71
74
  To use the latest version of `TFHE-rs` in your project, you first need to add it as a dependency in your `Cargo.toml`:
72
75
 
@@ -75,13 +78,13 @@ tfhe = { version = "*", features = ["boolean", "shortint", "integer"] }
75
78
  ```
76
79
 
77
80
  > [!Note]
78
- > Note: You need to use a Rust version >= 1.81 to compile TFHE-rs.
81
+ > Note: You need to use Rust version >= 1.84 to compile TFHE-rs.
79
82
 
80
83
  > [!Note]
81
- > Note: aarch64-based machines are not yet supported for Windows as it's currently missing an entropy source to be able to seed the [CSPRNGs](https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator) used in TFHE-rs.
84
+ > Note: AArch64-based machines are not supported for Windows as it's currently missing an entropy source to be able to seed the [CSPRNGs](https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator) used in TFHE-rs.
82
85
 
83
86
  <p align="right">
84
- <a href="#about" > ↑ Back to top </a>
87
+ <a href="#about" > ↑ Back to top </a>
85
88
  </p>
86
89
 
87
90
  ### A simple example
@@ -138,7 +141,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
138
141
  }
139
142
  ```
140
143
 
141
- To run this code, use the following command:
144
+ To run this code, use the following command:
142
145
  <p align="center"> <code> cargo run --release </code> </p>
143
146
 
144
147
  > [!Note]
@@ -148,12 +151,15 @@ to run in release mode with cargo's `--release` flag to have the best performanc
148
151
  *Find an example with more explanations in [this part of the documentation](https://docs.zama.ai/tfhe-rs/get-started/quick_start)*
149
152
 
150
153
  <p align="right">
151
- <a href="#about" > ↑ Back to top </a>
154
+ <a href="#about" > ↑ Back to top </a>
152
155
  </p>
153
156
 
154
157
 
155
158
 
156
- ## Resources
159
+ ## Resources
160
+
161
+ ### TFHE-rs Handbook
162
+ A document containing scientific and technical details about algorithms implemented into the library is available here: [TFHE-rs: A (Practical) Handbook](https://github.com/zama-ai/tfhe-rs-handbook/blob/main/tfhe-rs-handbook.pdf).
157
163
 
158
164
  ### TFHE deep dive
159
165
  - [TFHE Deep Dive - Part I - Ciphertext types](https://www.zama.ai/post/tfhe-deep-dive-part-1)
@@ -176,7 +182,7 @@ to run in release mode with cargo's `--release` flag to have the best performanc
176
182
 
177
183
  Full, comprehensive documentation is available here: [https://docs.zama.ai/tfhe-rs](https://docs.zama.ai/tfhe-rs).
178
184
  <p align="right">
179
- <a href="#about" > ↑ Back to top </a>
185
+ <a href="#about" > ↑ Back to top </a>
180
186
  </p>
181
187
 
182
188
 
@@ -194,9 +200,13 @@ When a new update is published in the Lattice Estimator, we update parameters ac
194
200
 
195
201
  ### Security model
196
202
 
197
- The default parameters for the TFHE-rs library are chosen considering the IND-CPA security model, and are selected with a bootstrapping failure probability fixed at p_error = $2^{-64}$. In particular, it is assumed that the results of decrypted computations are not shared by the secret key owner with any third parties, as such an action can lead to leakage of the secret encryption key. If you are designing an application where decryptions must be shared, you will need to craft custom encryption parameters which are chosen in consideration of the IND-CPA^D security model [1].
203
+ By default, the parameter sets used in the High-Level API with the x86 CPU backend have a failure probability $\le 2^{128}$ to securely work in the IND-CPA^D model using the algorithmic techniques provided in our code base [1].
204
+ If you want to work within the IND-CPA security model, which is less strict than the IND-CPA-D model, the parameter sets can easily be changed and would have slightly better performance. More details can be found in the [TFHE-rs documentation](https://docs.zama.ai/tfhe-rs).
205
+
206
+ The default parameters used in the High-Level API with the GPU backend are chosen considering the IND-CPA security model, and are selected with a bootstrapping failure probability fixed at $p_{error} \le 2^{-64}$. In particular, it is assumed that the results of decrypted computations are not shared by the secret key owner with any third parties, as such an action can lead to leakage of the secret encryption key. If you are designing an application where decryptions must be shared, you will need to craft custom encryption parameters which are chosen in consideration of the IND-CPA^D security model [2].
198
207
 
199
- [1] Li, Baiyu, et al. "Securing approximate homomorphic encryption using differential privacy." Annual International Cryptology Conference. Cham: Springer Nature Switzerland, 2022. https://eprint.iacr.org/2022/816.pdf
208
+ [1] Bernard, Olivier, et al. "Drifting Towards Better Error Probabilities in Fully Homomorphic Encryption Schemes". https://eprint.iacr.org/2024/1718.pdf
209
+ [2] Li, Baiyu, et al. "Securing approximate homomorphic encryption using differential privacy." Annual International Cryptology Conference. Cham: Springer Nature Switzerland, 2022. https://eprint.iacr.org/2022/816.pdf
200
210
 
201
211
  #### Side-channel attacks
202
212
 
@@ -245,7 +255,7 @@ This software is distributed under the **BSD-3-Clause-Clear** license. Read [thi
245
255
  >We are open to collaborating and advancing the FHE space with our partners. If you have specific needs, please email us at hello@zama.ai.
246
256
 
247
257
  <p align="right">
248
- <a href="#about" > ↑ Back to top </a>
258
+ <a href="#about" > ↑ Back to top </a>
249
259
  </p>
250
260
 
251
261
 
@@ -259,8 +269,8 @@ This software is distributed under the **BSD-3-Clause-Clear** license. Read [thi
259
269
  </picture>
260
270
  </a>
261
271
 
262
- 🌟 If you find this project helpful or interesting, please consider giving it a star on GitHub! Your support helps to grow the community and motivates further development.
272
+ 🌟 If you find this project helpful or interesting, please consider giving it a star on GitHub! Your support helps to grow the community and motivates further development.
263
273
 
264
274
  <p align="right">
265
- <a href="#about" > ↑ Back to top </a>
275
+ <a href="#about" > ↑ Back to top </a>
266
276
  </p>
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "tfhe",
3
3
  "type": "module",
4
4
  "description": "TFHE-rs is a fully homomorphic encryption (FHE) library that implements Zama's variant of TFHE.",
5
- "version": "1.0.0",
5
+ "version": "1.0.1",
6
6
  "license": "BSD-3-Clause-Clear",
7
7
  "repository": {
8
8
  "type": "git",
package/tfhe.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
- export function init_panic_hook(): void;
4
- export function set_server_key(server_key: TfheServerKey): void;
5
3
  export function shortint_pke_params_name(param: ShortintCompactPublicKeyEncryptionParametersName): string;
6
4
  export function shortint_params_name(param: ShortintParametersName): string;
5
+ export function init_panic_hook(): void;
6
+ export function set_server_key(server_key: TfheServerKey): void;
7
7
  export function initThreadPool(num_threads: number): Promise<any>;
8
8
  export function wbg_rayon_start_worker(receiver: number): void;
9
9
  export enum BooleanEncryptionKeyChoice {
@@ -1225,6 +1225,70 @@ export class wbg_rayon_PoolBuilder {
1225
1225
  export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
1226
1226
 
1227
1227
  export interface InitOutput {
1228
+ readonly __wbg_shortintciphertext_free: (a: number, b: number) => void;
1229
+ readonly __wbg_shortintcompressedciphertext_free: (a: number, b: number) => void;
1230
+ readonly __wbg_shortintclientkey_free: (a: number, b: number) => void;
1231
+ readonly __wbg_shortintpublickey_free: (a: number, b: number) => void;
1232
+ readonly __wbg_shortintcompressedpublickey_free: (a: number, b: number) => void;
1233
+ readonly __wbg_shortintcompressedserverkey_free: (a: number, b: number) => void;
1234
+ readonly __wbg_shortint_free: (a: number, b: number) => void;
1235
+ readonly __wbg_shortintparameters_free: (a: number, b: number) => void;
1236
+ readonly __wbg_shortintcompactpublickeyencryptionparameters_free: (a: number, b: number) => void;
1237
+ readonly shortintparameters_lwe_dimension: (a: number) => number;
1238
+ readonly shortintparameters_set_lwe_dimension: (a: number, b: number) => void;
1239
+ readonly shortintparameters_glwe_dimension: (a: number) => number;
1240
+ readonly shortintparameters_set_glwe_dimension: (a: number, b: number) => void;
1241
+ readonly shortintparameters_polynomial_size: (a: number) => number;
1242
+ readonly shortintparameters_set_polynomial_size: (a: number, b: number) => void;
1243
+ readonly shortintparameters_set_lwe_noise_distribution: (a: number, b: number) => void;
1244
+ readonly shortintparameters_glwe_noise_distribution: (a: number) => number;
1245
+ readonly shortintparameters_set_glwe_noise_distribution: (a: number, b: number) => void;
1246
+ readonly shortintparameters_pbs_base_log: (a: number) => number;
1247
+ readonly shortintparameters_set_pbs_base_log: (a: number, b: number) => void;
1248
+ readonly shortintparameters_pbs_level: (a: number) => number;
1249
+ readonly shortintparameters_set_pbs_level: (a: number, b: number) => void;
1250
+ readonly shortintparameters_ks_base_log: (a: number) => number;
1251
+ readonly shortintparameters_set_ks_base_log: (a: number, b: number) => void;
1252
+ readonly shortintparameters_ks_level: (a: number) => number;
1253
+ readonly shortintparameters_set_ks_level: (a: number, b: number) => void;
1254
+ readonly shortintparameters_message_modulus: (a: number) => bigint;
1255
+ readonly shortintparameters_set_message_modulus: (a: number, b: bigint) => void;
1256
+ readonly shortintparameters_carry_modulus: (a: number) => bigint;
1257
+ readonly shortintparameters_set_carry_modulus: (a: number, b: bigint) => void;
1258
+ readonly shortintparameters_encryption_key_choice: (a: number) => number;
1259
+ readonly shortintparameters_set_encryption_key_choice: (a: number, b: number) => void;
1260
+ readonly __wbg_shortintnoisedistribution_free: (a: number, b: number) => void;
1261
+ readonly shortint_pke_params_name: (a: number) => [number, number];
1262
+ readonly shortintcompactpublickeyencryptionparameters_new: (a: number) => number;
1263
+ readonly shortintcompactpublickeyencryptionparameters_new_parameters: (a: number, b: number, c: bigint, d: bigint, e: number, f: number, g: number, h: number) => [number, number, number];
1264
+ readonly shortint_params_name: (a: number) => [number, number];
1265
+ readonly shortintparameters_new: (a: number) => number;
1266
+ readonly shortint_new_gaussian_from_std_dev: (a: number) => number;
1267
+ readonly shortint_try_new_t_uniform: (a: number) => [number, number, number];
1268
+ readonly shortint_new_parameters: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: bigint, k: bigint, l: bigint, m: number, n: number, o: number) => number;
1269
+ readonly shortint_new_client_key_from_seed_and_parameters: (a: bigint, b: bigint, c: number) => number;
1270
+ readonly shortint_new_client_key: (a: number) => number;
1271
+ readonly shortint_new_public_key: (a: number) => number;
1272
+ readonly shortint_new_compressed_public_key: (a: number) => number;
1273
+ readonly shortint_new_compressed_server_key: (a: number) => number;
1274
+ readonly shortint_encrypt: (a: number, b: bigint) => number;
1275
+ readonly shortint_encrypt_compressed: (a: number, b: bigint) => number;
1276
+ readonly shortint_decompress_ciphertext: (a: number) => number;
1277
+ readonly shortint_encrypt_with_public_key: (a: number, b: bigint) => number;
1278
+ readonly shortint_encrypt_with_compressed_public_key: (a: number, b: bigint) => number;
1279
+ readonly shortint_decrypt: (a: number, b: number) => bigint;
1280
+ readonly shortint_serialize_ciphertext: (a: number) => [number, number, number, number];
1281
+ readonly shortint_deserialize_ciphertext: (a: number, b: number) => [number, number, number];
1282
+ readonly shortint_serialize_compressed_ciphertext: (a: number) => [number, number, number, number];
1283
+ readonly shortint_deserialize_compressed_ciphertext: (a: number, b: number) => [number, number, number];
1284
+ readonly shortint_serialize_client_key: (a: number) => [number, number, number, number];
1285
+ readonly shortint_deserialize_client_key: (a: number, b: number) => [number, number, number];
1286
+ readonly shortint_serialize_public_key: (a: number) => [number, number, number, number];
1287
+ readonly shortint_deserialize_public_key: (a: number, b: number) => [number, number, number];
1288
+ readonly shortint_serialize_compressed_public_key: (a: number) => [number, number, number, number];
1289
+ readonly shortint_deserialize_compressed_public_key: (a: number, b: number) => [number, number, number];
1290
+ readonly shortint_serialize_compressed_server_key: (a: number) => [number, number, number, number];
1291
+ readonly shortint_deserialize_compressed_server_key: (a: number, b: number) => [number, number, number];
1228
1292
  readonly __wbg_tfheconfig_free: (a: number, b: number) => void;
1229
1293
  readonly __wbg_tfheconfigbuilder_free: (a: number, b: number) => void;
1230
1294
  readonly tfheconfigbuilder_default: () => number;
@@ -1232,10 +1296,65 @@ export interface InitOutput {
1232
1296
  readonly tfheconfigbuilder_use_custom_parameters: (a: number, b: number) => number;
1233
1297
  readonly tfheconfigbuilder_use_dedicated_compact_public_key_parameters: (a: number, b: number) => number;
1234
1298
  readonly tfheconfigbuilder_build: (a: number) => number;
1299
+ readonly init_panic_hook: () => void;
1300
+ readonly __wbg_tfheclientkey_free: (a: number, b: number) => void;
1301
+ readonly tfheclientkey_generate: (a: number) => [number, number, number];
1302
+ readonly tfheclientkey_generate_with_seed: (a: number, b: any) => [number, number, number];
1303
+ readonly tfheclientkey_serialize: (a: number) => [number, number, number, number];
1304
+ readonly tfheclientkey_deserialize: (a: number, b: number) => [number, number, number];
1305
+ readonly tfheclientkey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1306
+ readonly tfheclientkey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
1307
+ readonly __wbg_tfhecompressedserverkey_free: (a: number, b: number) => void;
1308
+ readonly tfhecompressedserverkey_new: (a: number) => [number, number, number];
1309
+ readonly tfhecompressedserverkey_serialize: (a: number) => [number, number, number, number];
1310
+ readonly tfhecompressedserverkey_deserialize: (a: number, b: number) => [number, number, number];
1311
+ readonly tfhecompressedserverkey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1312
+ readonly tfhecompressedserverkey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
1313
+ readonly __wbg_tfheserverkey_free: (a: number, b: number) => void;
1314
+ readonly tfheserverkey_new: (a: number) => [number, number, number];
1315
+ readonly set_server_key: (a: number) => [number, number];
1316
+ readonly __wbg_tfhepublickey_free: (a: number, b: number) => void;
1317
+ readonly tfhepublickey_new: (a: number) => [number, number, number];
1318
+ readonly tfhepublickey_serialize: (a: number) => [number, number, number, number];
1319
+ readonly tfhepublickey_deserialize: (a: number, b: number) => [number, number, number];
1320
+ readonly tfhepublickey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1321
+ readonly tfhepublickey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
1322
+ readonly __wbg_tfhecompressedpublickey_free: (a: number, b: number) => void;
1323
+ readonly tfhecompressedpublickey_new: (a: number) => [number, number, number];
1324
+ readonly tfhecompressedpublickey_decompress: (a: number) => [number, number, number];
1325
+ readonly tfhecompressedpublickey_serialize: (a: number) => [number, number, number, number];
1326
+ readonly tfhecompressedpublickey_deserialize: (a: number, b: number) => [number, number, number];
1327
+ readonly tfhecompressedpublickey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1328
+ readonly tfhecompressedpublickey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
1329
+ readonly __wbg_tfhecompactpublickey_free: (a: number, b: number) => void;
1330
+ readonly tfhecompactpublickey_new: (a: number) => [number, number, number];
1331
+ readonly tfhecompactpublickey_serialize: (a: number) => [number, number, number, number];
1332
+ readonly tfhecompactpublickey_deserialize: (a: number, b: number) => [number, number, number];
1333
+ readonly tfhecompactpublickey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1334
+ readonly tfhecompactpublickey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
1335
+ readonly tfhecompactpublickey_safe_deserialize_conformant: (a: number, b: number, c: bigint, d: number) => [number, number, number];
1336
+ readonly __wbg_tfhecompressedcompactpublickey_free: (a: number, b: number) => void;
1337
+ readonly tfhecompressedcompactpublickey_new: (a: number) => [number, number, number];
1338
+ readonly tfhecompressedcompactpublickey_serialize: (a: number) => [number, number, number, number];
1339
+ readonly tfhecompressedcompactpublickey_deserialize: (a: number, b: number) => [number, number, number];
1340
+ readonly tfhecompressedcompactpublickey_decompress: (a: number) => [number, number, number];
1341
+ readonly tfhecompressedcompactpublickey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1342
+ readonly tfhecompressedcompactpublickey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
1343
+ readonly tfhecompressedcompactpublickey_safe_deserialize_conformant: (a: number, b: number, c: bigint, d: number) => [number, number, number];
1344
+ readonly __wbg_compactpkecrs_free: (a: number, b: number) => void;
1345
+ readonly compactpkecrs_serialize: (a: number, b: number) => [number, number, number, number];
1346
+ readonly compactpkecrs_deserialize: (a: number, b: number) => [number, number, number];
1347
+ readonly compactpkecrs_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1348
+ readonly compactpkecrs_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
1349
+ readonly compactpkecrs_from_config: (a: number, b: number) => [number, number, number];
1350
+ readonly compactpkecrs_deserialize_from_public_params: (a: number, b: number) => [number, number, number];
1351
+ readonly compactpkecrs_safe_deserialize_from_public_params: (a: number, b: number, c: bigint) => [number, number, number];
1352
+ readonly shortintparameters_lwe_noise_distribution: (a: number) => number;
1235
1353
  readonly fheuint128_encrypt_with_client_key: (a: any, b: number) => [number, number, number];
1236
1354
  readonly fheuint128_encrypt_with_public_key: (a: any, b: number) => [number, number, number];
1237
1355
  readonly fheuint128_encrypt_with_compressed_public_key: (a: any, b: number) => [number, number, number];
1238
1356
  readonly fheuint128_decrypt: (a: number, b: number) => [number, number, number];
1357
+ readonly fheuint128_serialize: (a: number) => [number, number, number, number];
1239
1358
  readonly fheuint128_deserialize: (a: number, b: number) => [number, number, number];
1240
1359
  readonly fheuint128_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1241
1360
  readonly fheuint128_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1249,6 +1368,7 @@ export interface InitOutput {
1249
1368
  readonly fheuint160_encrypt_with_public_key: (a: any, b: number) => [number, number, number];
1250
1369
  readonly fheuint160_encrypt_with_compressed_public_key: (a: any, b: number) => [number, number, number];
1251
1370
  readonly fheuint160_decrypt: (a: number, b: number) => [number, number, number];
1371
+ readonly fheuint160_serialize: (a: number) => [number, number, number, number];
1252
1372
  readonly fheuint160_deserialize: (a: number, b: number) => [number, number, number];
1253
1373
  readonly fheuint160_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1254
1374
  readonly fheuint160_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1261,6 +1381,7 @@ export interface InitOutput {
1261
1381
  readonly fheuint256_encrypt_with_client_key: (a: any, b: number) => [number, number, number];
1262
1382
  readonly fheuint256_encrypt_with_public_key: (a: any, b: number) => [number, number, number];
1263
1383
  readonly fheuint256_encrypt_with_compressed_public_key: (a: any, b: number) => [number, number, number];
1384
+ readonly fheuint256_serialize: (a: number) => [number, number, number, number];
1264
1385
  readonly fheuint256_deserialize: (a: number, b: number) => [number, number, number];
1265
1386
  readonly fheuint256_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1266
1387
  readonly fheuint256_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1274,6 +1395,7 @@ export interface InitOutput {
1274
1395
  readonly fheuint512_encrypt_with_public_key: (a: any, b: number) => [number, number, number];
1275
1396
  readonly fheuint512_encrypt_with_compressed_public_key: (a: any, b: number) => [number, number, number];
1276
1397
  readonly fheuint512_decrypt: (a: number, b: number) => [number, number, number];
1398
+ readonly fheuint512_serialize: (a: number) => [number, number, number, number];
1277
1399
  readonly fheuint512_deserialize: (a: number, b: number) => [number, number, number];
1278
1400
  readonly fheuint512_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1279
1401
  readonly fheuint512_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1287,6 +1409,7 @@ export interface InitOutput {
1287
1409
  readonly fheuint1024_encrypt_with_public_key: (a: any, b: number) => [number, number, number];
1288
1410
  readonly fheuint1024_encrypt_with_compressed_public_key: (a: any, b: number) => [number, number, number];
1289
1411
  readonly fheuint1024_decrypt: (a: number, b: number) => [number, number, number];
1412
+ readonly fheuint1024_serialize: (a: number) => [number, number, number, number];
1290
1413
  readonly fheuint1024_deserialize: (a: number, b: number) => [number, number, number];
1291
1414
  readonly fheuint1024_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1292
1415
  readonly fheuint1024_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1300,6 +1423,7 @@ export interface InitOutput {
1300
1423
  readonly fheuint2048_encrypt_with_public_key: (a: any, b: number) => [number, number, number];
1301
1424
  readonly fheuint2048_encrypt_with_compressed_public_key: (a: any, b: number) => [number, number, number];
1302
1425
  readonly fheuint2048_decrypt: (a: number, b: number) => [number, number, number];
1426
+ readonly fheuint2048_serialize: (a: number) => [number, number, number, number];
1303
1427
  readonly fheuint2048_deserialize: (a: number, b: number) => [number, number, number];
1304
1428
  readonly fheuint2048_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1305
1429
  readonly fheuint2048_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1313,6 +1437,7 @@ export interface InitOutput {
1313
1437
  readonly fheint128_encrypt_with_public_key: (a: any, b: number) => [number, number, number];
1314
1438
  readonly fheint128_encrypt_with_compressed_public_key: (a: any, b: number) => [number, number, number];
1315
1439
  readonly fheint128_decrypt: (a: number, b: number) => [number, number, number];
1440
+ readonly fheint128_serialize: (a: number) => [number, number, number, number];
1316
1441
  readonly fheint128_deserialize: (a: number, b: number) => [number, number, number];
1317
1442
  readonly fheint128_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1318
1443
  readonly fheint128_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1326,6 +1451,7 @@ export interface InitOutput {
1326
1451
  readonly fheint160_encrypt_with_public_key: (a: any, b: number) => [number, number, number];
1327
1452
  readonly fheint160_encrypt_with_compressed_public_key: (a: any, b: number) => [number, number, number];
1328
1453
  readonly fheint160_decrypt: (a: number, b: number) => [number, number, number];
1454
+ readonly fheint160_serialize: (a: number) => [number, number, number, number];
1329
1455
  readonly fheint160_deserialize: (a: number, b: number) => [number, number, number];
1330
1456
  readonly fheint160_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1331
1457
  readonly fheint160_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1338,6 +1464,7 @@ export interface InitOutput {
1338
1464
  readonly fheint256_encrypt_with_client_key: (a: any, b: number) => [number, number, number];
1339
1465
  readonly fheint256_encrypt_with_public_key: (a: any, b: number) => [number, number, number];
1340
1466
  readonly fheint256_encrypt_with_compressed_public_key: (a: any, b: number) => [number, number, number];
1467
+ readonly fheint256_serialize: (a: number) => [number, number, number, number];
1341
1468
  readonly fheint256_deserialize: (a: number, b: number) => [number, number, number];
1342
1469
  readonly fheint256_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1343
1470
  readonly fheint256_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1367,6 +1494,7 @@ export interface InitOutput {
1367
1494
  readonly fheuint2_encrypt_with_public_key: (a: number, b: number) => [number, number, number];
1368
1495
  readonly fheuint2_encrypt_with_compressed_public_key: (a: number, b: number) => [number, number, number];
1369
1496
  readonly fheuint2_decrypt: (a: number, b: number) => [number, number, number];
1497
+ readonly fheuint2_serialize: (a: number) => [number, number, number, number];
1370
1498
  readonly fheuint2_deserialize: (a: number, b: number) => [number, number, number];
1371
1499
  readonly fheuint2_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1372
1500
  readonly fheuint2_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1379,6 +1507,7 @@ export interface InitOutput {
1379
1507
  readonly fheuint4_encrypt_with_client_key: (a: number, b: number) => [number, number, number];
1380
1508
  readonly fheuint4_encrypt_with_public_key: (a: number, b: number) => [number, number, number];
1381
1509
  readonly fheuint4_encrypt_with_compressed_public_key: (a: number, b: number) => [number, number, number];
1510
+ readonly fheuint4_serialize: (a: number) => [number, number, number, number];
1382
1511
  readonly fheuint4_deserialize: (a: number, b: number) => [number, number, number];
1383
1512
  readonly fheuint4_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1384
1513
  readonly fheuint4_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1391,6 +1520,7 @@ export interface InitOutput {
1391
1520
  readonly fheuint6_encrypt_with_client_key: (a: number, b: number) => [number, number, number];
1392
1521
  readonly fheuint6_encrypt_with_public_key: (a: number, b: number) => [number, number, number];
1393
1522
  readonly fheuint6_encrypt_with_compressed_public_key: (a: number, b: number) => [number, number, number];
1523
+ readonly fheuint6_serialize: (a: number) => [number, number, number, number];
1394
1524
  readonly fheuint6_deserialize: (a: number, b: number) => [number, number, number];
1395
1525
  readonly fheuint6_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1396
1526
  readonly fheuint6_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1403,6 +1533,7 @@ export interface InitOutput {
1403
1533
  readonly fheuint8_encrypt_with_client_key: (a: number, b: number) => [number, number, number];
1404
1534
  readonly fheuint8_encrypt_with_public_key: (a: number, b: number) => [number, number, number];
1405
1535
  readonly fheuint8_encrypt_with_compressed_public_key: (a: number, b: number) => [number, number, number];
1536
+ readonly fheuint8_serialize: (a: number) => [number, number, number, number];
1406
1537
  readonly fheuint8_deserialize: (a: number, b: number) => [number, number, number];
1407
1538
  readonly fheuint8_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1408
1539
  readonly fheuint8_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1416,6 +1547,7 @@ export interface InitOutput {
1416
1547
  readonly fheuint10_encrypt_with_public_key: (a: number, b: number) => [number, number, number];
1417
1548
  readonly fheuint10_encrypt_with_compressed_public_key: (a: number, b: number) => [number, number, number];
1418
1549
  readonly fheuint10_decrypt: (a: number, b: number) => [number, number, number];
1550
+ readonly fheuint10_serialize: (a: number) => [number, number, number, number];
1419
1551
  readonly fheuint10_deserialize: (a: number, b: number) => [number, number, number];
1420
1552
  readonly fheuint10_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1421
1553
  readonly fheuint10_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1428,6 +1560,7 @@ export interface InitOutput {
1428
1560
  readonly fheuint12_encrypt_with_client_key: (a: number, b: number) => [number, number, number];
1429
1561
  readonly fheuint12_encrypt_with_public_key: (a: number, b: number) => [number, number, number];
1430
1562
  readonly fheuint12_encrypt_with_compressed_public_key: (a: number, b: number) => [number, number, number];
1563
+ readonly fheuint12_serialize: (a: number) => [number, number, number, number];
1431
1564
  readonly fheuint12_deserialize: (a: number, b: number) => [number, number, number];
1432
1565
  readonly fheuint12_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1433
1566
  readonly fheuint12_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1440,6 +1573,7 @@ export interface InitOutput {
1440
1573
  readonly fheuint14_encrypt_with_client_key: (a: number, b: number) => [number, number, number];
1441
1574
  readonly fheuint14_encrypt_with_public_key: (a: number, b: number) => [number, number, number];
1442
1575
  readonly fheuint14_encrypt_with_compressed_public_key: (a: number, b: number) => [number, number, number];
1576
+ readonly fheuint14_serialize: (a: number) => [number, number, number, number];
1443
1577
  readonly fheuint14_deserialize: (a: number, b: number) => [number, number, number];
1444
1578
  readonly fheuint14_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1445
1579
  readonly fheuint14_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1452,6 +1586,7 @@ export interface InitOutput {
1452
1586
  readonly fheuint16_encrypt_with_client_key: (a: number, b: number) => [number, number, number];
1453
1587
  readonly fheuint16_encrypt_with_public_key: (a: number, b: number) => [number, number, number];
1454
1588
  readonly fheuint16_encrypt_with_compressed_public_key: (a: number, b: number) => [number, number, number];
1589
+ readonly fheuint16_serialize: (a: number) => [number, number, number, number];
1455
1590
  readonly fheuint16_deserialize: (a: number, b: number) => [number, number, number];
1456
1591
  readonly fheuint16_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1457
1592
  readonly fheuint16_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1465,6 +1600,7 @@ export interface InitOutput {
1465
1600
  readonly fheuint32_encrypt_with_public_key: (a: number, b: number) => [number, number, number];
1466
1601
  readonly fheuint32_encrypt_with_compressed_public_key: (a: number, b: number) => [number, number, number];
1467
1602
  readonly fheuint32_decrypt: (a: number, b: number) => [number, number, number];
1603
+ readonly fheuint32_serialize: (a: number) => [number, number, number, number];
1468
1604
  readonly fheuint32_deserialize: (a: number, b: number) => [number, number, number];
1469
1605
  readonly fheuint32_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1470
1606
  readonly fheuint32_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1478,6 +1614,7 @@ export interface InitOutput {
1478
1614
  readonly fheuint64_encrypt_with_public_key: (a: bigint, b: number) => [number, number, number];
1479
1615
  readonly fheuint64_encrypt_with_compressed_public_key: (a: bigint, b: number) => [number, number, number];
1480
1616
  readonly fheuint64_decrypt: (a: number, b: number) => [bigint, number, number];
1617
+ readonly fheuint64_serialize: (a: number) => [number, number, number, number];
1481
1618
  readonly fheuint64_deserialize: (a: number, b: number) => [number, number, number];
1482
1619
  readonly fheuint64_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1483
1620
  readonly fheuint64_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1491,6 +1628,7 @@ export interface InitOutput {
1491
1628
  readonly fheint2_encrypt_with_public_key: (a: number, b: number) => [number, number, number];
1492
1629
  readonly fheint2_encrypt_with_compressed_public_key: (a: number, b: number) => [number, number, number];
1493
1630
  readonly fheint2_decrypt: (a: number, b: number) => [number, number, number];
1631
+ readonly fheint2_serialize: (a: number) => [number, number, number, number];
1494
1632
  readonly fheint2_deserialize: (a: number, b: number) => [number, number, number];
1495
1633
  readonly fheint2_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1496
1634
  readonly fheint2_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1503,6 +1641,7 @@ export interface InitOutput {
1503
1641
  readonly fheint4_encrypt_with_client_key: (a: number, b: number) => [number, number, number];
1504
1642
  readonly fheint4_encrypt_with_public_key: (a: number, b: number) => [number, number, number];
1505
1643
  readonly fheint4_encrypt_with_compressed_public_key: (a: number, b: number) => [number, number, number];
1644
+ readonly fheint4_serialize: (a: number) => [number, number, number, number];
1506
1645
  readonly fheint4_deserialize: (a: number, b: number) => [number, number, number];
1507
1646
  readonly fheint4_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1508
1647
  readonly fheint4_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1515,6 +1654,7 @@ export interface InitOutput {
1515
1654
  readonly fheint6_encrypt_with_client_key: (a: number, b: number) => [number, number, number];
1516
1655
  readonly fheint6_encrypt_with_public_key: (a: number, b: number) => [number, number, number];
1517
1656
  readonly fheint6_encrypt_with_compressed_public_key: (a: number, b: number) => [number, number, number];
1657
+ readonly fheint6_serialize: (a: number) => [number, number, number, number];
1518
1658
  readonly fheint6_deserialize: (a: number, b: number) => [number, number, number];
1519
1659
  readonly fheint6_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1520
1660
  readonly fheint6_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1527,6 +1667,7 @@ export interface InitOutput {
1527
1667
  readonly fheint8_encrypt_with_client_key: (a: number, b: number) => [number, number, number];
1528
1668
  readonly fheint8_encrypt_with_public_key: (a: number, b: number) => [number, number, number];
1529
1669
  readonly fheint8_encrypt_with_compressed_public_key: (a: number, b: number) => [number, number, number];
1670
+ readonly fheint8_serialize: (a: number) => [number, number, number, number];
1530
1671
  readonly fheint8_deserialize: (a: number, b: number) => [number, number, number];
1531
1672
  readonly fheint8_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1532
1673
  readonly fheint8_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1555,6 +1696,7 @@ export interface InitOutput {
1555
1696
  readonly fheint12_encrypt_with_client_key: (a: number, b: number) => [number, number, number];
1556
1697
  readonly fheint12_encrypt_with_public_key: (a: number, b: number) => [number, number, number];
1557
1698
  readonly fheint12_encrypt_with_compressed_public_key: (a: number, b: number) => [number, number, number];
1699
+ readonly fheint12_serialize: (a: number) => [number, number, number, number];
1558
1700
  readonly fheint12_deserialize: (a: number, b: number) => [number, number, number];
1559
1701
  readonly fheint12_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1560
1702
  readonly fheint12_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1567,6 +1709,7 @@ export interface InitOutput {
1567
1709
  readonly fheint14_encrypt_with_client_key: (a: number, b: number) => [number, number, number];
1568
1710
  readonly fheint14_encrypt_with_public_key: (a: number, b: number) => [number, number, number];
1569
1711
  readonly fheint14_encrypt_with_compressed_public_key: (a: number, b: number) => [number, number, number];
1712
+ readonly fheint14_serialize: (a: number) => [number, number, number, number];
1570
1713
  readonly fheint14_deserialize: (a: number, b: number) => [number, number, number];
1571
1714
  readonly fheint14_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1572
1715
  readonly fheint14_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1579,6 +1722,7 @@ export interface InitOutput {
1579
1722
  readonly fheint16_encrypt_with_client_key: (a: number, b: number) => [number, number, number];
1580
1723
  readonly fheint16_encrypt_with_public_key: (a: number, b: number) => [number, number, number];
1581
1724
  readonly fheint16_encrypt_with_compressed_public_key: (a: number, b: number) => [number, number, number];
1725
+ readonly fheint16_serialize: (a: number) => [number, number, number, number];
1582
1726
  readonly fheint16_deserialize: (a: number, b: number) => [number, number, number];
1583
1727
  readonly fheint16_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1584
1728
  readonly fheint16_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1592,6 +1736,7 @@ export interface InitOutput {
1592
1736
  readonly fheint32_encrypt_with_public_key: (a: number, b: number) => [number, number, number];
1593
1737
  readonly fheint32_encrypt_with_compressed_public_key: (a: number, b: number) => [number, number, number];
1594
1738
  readonly fheint32_decrypt: (a: number, b: number) => [number, number, number];
1739
+ readonly fheint32_serialize: (a: number) => [number, number, number, number];
1595
1740
  readonly fheint32_deserialize: (a: number, b: number) => [number, number, number];
1596
1741
  readonly fheint32_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1597
1742
  readonly fheint32_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1605,6 +1750,7 @@ export interface InitOutput {
1605
1750
  readonly fheint64_encrypt_with_public_key: (a: bigint, b: number) => [number, number, number];
1606
1751
  readonly fheint64_encrypt_with_compressed_public_key: (a: bigint, b: number) => [number, number, number];
1607
1752
  readonly fheint64_decrypt: (a: number, b: number) => [bigint, number, number];
1753
+ readonly fheint64_serialize: (a: number) => [number, number, number, number];
1608
1754
  readonly fheint64_deserialize: (a: number, b: number) => [number, number, number];
1609
1755
  readonly fheint64_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1610
1756
  readonly fheint64_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
@@ -1701,53 +1847,8 @@ export interface InitOutput {
1701
1847
  readonly compactciphertextlistexpander_len: (a: number) => number;
1702
1848
  readonly compactciphertextlistexpander_is_empty: (a: number) => number;
1703
1849
  readonly compactciphertextlistexpander_get_kind_of: (a: number, b: number) => number;
1704
- readonly init_panic_hook: () => void;
1705
- readonly __wbg_tfheclientkey_free: (a: number, b: number) => void;
1706
- readonly tfheclientkey_generate: (a: number) => [number, number, number];
1707
- readonly tfheclientkey_generate_with_seed: (a: number, b: any) => [number, number, number];
1708
- readonly tfheclientkey_serialize: (a: number) => [number, number, number, number];
1709
- readonly tfheclientkey_deserialize: (a: number, b: number) => [number, number, number];
1710
- readonly tfheclientkey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1711
- readonly tfheclientkey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
1712
- readonly __wbg_tfhecompressedserverkey_free: (a: number, b: number) => void;
1713
- readonly tfhecompressedserverkey_new: (a: number) => [number, number, number];
1714
- readonly tfhecompressedserverkey_serialize: (a: number) => [number, number, number, number];
1715
- readonly tfhecompressedserverkey_deserialize: (a: number, b: number) => [number, number, number];
1716
- readonly tfhecompressedserverkey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1717
- readonly tfhecompressedserverkey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
1718
- readonly __wbg_tfheserverkey_free: (a: number, b: number) => void;
1719
- readonly tfheserverkey_new: (a: number) => [number, number, number];
1720
- readonly set_server_key: (a: number) => [number, number];
1721
- readonly __wbg_tfhepublickey_free: (a: number, b: number) => void;
1722
- readonly tfhepublickey_new: (a: number) => [number, number, number];
1723
- readonly tfhepublickey_serialize: (a: number) => [number, number, number, number];
1724
- readonly tfhepublickey_deserialize: (a: number, b: number) => [number, number, number];
1725
- readonly tfhepublickey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1726
- readonly tfhepublickey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
1727
- readonly __wbg_tfhecompressedpublickey_free: (a: number, b: number) => void;
1728
- readonly tfhecompressedpublickey_new: (a: number) => [number, number, number];
1729
- readonly tfhecompressedpublickey_decompress: (a: number) => [number, number, number];
1730
- readonly tfhecompressedpublickey_serialize: (a: number) => [number, number, number, number];
1731
- readonly tfhecompressedpublickey_deserialize: (a: number, b: number) => [number, number, number];
1732
- readonly tfhecompressedpublickey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1733
- readonly tfhecompressedpublickey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
1734
- readonly __wbg_tfhecompactpublickey_free: (a: number, b: number) => void;
1735
- readonly tfhecompactpublickey_new: (a: number) => [number, number, number];
1736
- readonly tfhecompactpublickey_serialize: (a: number) => [number, number, number, number];
1737
- readonly tfhecompactpublickey_deserialize: (a: number, b: number) => [number, number, number];
1738
- readonly tfhecompactpublickey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1739
- readonly tfhecompactpublickey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
1740
- readonly tfhecompactpublickey_safe_deserialize_conformant: (a: number, b: number, c: bigint, d: number) => [number, number, number];
1741
- readonly __wbg_tfhecompressedcompactpublickey_free: (a: number, b: number) => void;
1742
- readonly tfhecompressedcompactpublickey_new: (a: number) => [number, number, number];
1743
- readonly tfhecompressedcompactpublickey_serialize: (a: number) => [number, number, number, number];
1744
- readonly tfhecompressedcompactpublickey_deserialize: (a: number, b: number) => [number, number, number];
1745
- readonly tfhecompressedcompactpublickey_decompress: (a: number) => [number, number, number];
1746
- readonly tfhecompressedcompactpublickey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1747
- readonly tfhecompressedcompactpublickey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
1748
- readonly tfhecompressedcompactpublickey_safe_deserialize_conformant: (a: number, b: number, c: bigint, d: number) => [number, number, number];
1850
+ readonly fheuint256_decrypt: (a: number, b: number) => [number, number, number];
1749
1851
  readonly provencompactciphertextlist_is_empty: (a: number) => number;
1750
- readonly provencompactciphertextlist_len: (a: number) => number;
1751
1852
  readonly fheint256_decrypt: (a: number, b: number) => [number, number, number];
1752
1853
  readonly __wbg_fheuint160_free: (a: number, b: number) => void;
1753
1854
  readonly __wbg_fheuint256_free: (a: number, b: number) => void;
@@ -1777,75 +1878,47 @@ export interface InitOutput {
1777
1878
  readonly __wbg_fheint16_free: (a: number, b: number) => void;
1778
1879
  readonly __wbg_fheint32_free: (a: number, b: number) => void;
1779
1880
  readonly __wbg_fheint64_free: (a: number, b: number) => void;
1780
- readonly fheuint4_decrypt: (a: number, b: number) => [number, number, number];
1781
- readonly fheuint6_decrypt: (a: number, b: number) => [number, number, number];
1782
- readonly fheuint8_decrypt: (a: number, b: number) => [number, number, number];
1783
- readonly fheuint12_decrypt: (a: number, b: number) => [number, number, number];
1784
- readonly fheuint14_decrypt: (a: number, b: number) => [number, number, number];
1881
+ readonly provencompactciphertextlist_len: (a: number) => number;
1785
1882
  readonly fheuint16_decrypt: (a: number, b: number) => [number, number, number];
1883
+ readonly fheuint14_decrypt: (a: number, b: number) => [number, number, number];
1884
+ readonly fheuint8_decrypt: (a: number, b: number) => [number, number, number];
1786
1885
  readonly fheint4_decrypt: (a: number, b: number) => [number, number, number];
1787
1886
  readonly fheint6_decrypt: (a: number, b: number) => [number, number, number];
1887
+ readonly fheuint6_decrypt: (a: number, b: number) => [number, number, number];
1888
+ readonly fheuint12_decrypt: (a: number, b: number) => [number, number, number];
1788
1889
  readonly fheint8_decrypt: (a: number, b: number) => [number, number, number];
1890
+ readonly fheuint4_decrypt: (a: number, b: number) => [number, number, number];
1891
+ readonly fheint16_decrypt: (a: number, b: number) => [number, number, number];
1789
1892
  readonly fheint12_decrypt: (a: number, b: number) => [number, number, number];
1790
1893
  readonly fheint14_decrypt: (a: number, b: number) => [number, number, number];
1791
- readonly fheint16_decrypt: (a: number, b: number) => [number, number, number];
1792
- readonly __wbg_compressedfheuint160_free: (a: number, b: number) => void;
1793
- readonly __wbg_compressedfheuint256_free: (a: number, b: number) => void;
1794
- readonly __wbg_compressedfheuint512_free: (a: number, b: number) => void;
1795
- readonly __wbg_compressedfheuint128_free: (a: number, b: number) => void;
1796
- readonly __wbg_compressedfheuint2048_free: (a: number, b: number) => void;
1797
- readonly __wbg_compressedfheuint1024_free: (a: number, b: number) => void;
1894
+ readonly __wbg_compressedfheuint6_free: (a: number, b: number) => void;
1798
1895
  readonly __wbg_compressedfheint160_free: (a: number, b: number) => void;
1799
- readonly __wbg_compressedfheint256_free: (a: number, b: number) => void;
1800
- readonly __wbg_compressedfheuint2_free: (a: number, b: number) => void;
1896
+ readonly __wbg_compressedfheint2_free: (a: number, b: number) => void;
1897
+ readonly __wbg_compressedfheuint2048_free: (a: number, b: number) => void;
1898
+ readonly __wbg_compressedfheint128_free: (a: number, b: number) => void;
1801
1899
  readonly __wbg_compressedfheuint4_free: (a: number, b: number) => void;
1802
- readonly __wbg_compressedfheuint6_free: (a: number, b: number) => void;
1803
- readonly __wbg_compressedfheuint8_free: (a: number, b: number) => void;
1804
- readonly __wbg_compressedfheuint10_free: (a: number, b: number) => void;
1900
+ readonly __wbg_compressedfheuint128_free: (a: number, b: number) => void;
1805
1901
  readonly __wbg_compressedfheuint12_free: (a: number, b: number) => void;
1806
- readonly __wbg_compressedfheuint14_free: (a: number, b: number) => void;
1902
+ readonly __wbg_compressedfheuint10_free: (a: number, b: number) => void;
1903
+ readonly __wbg_compressedfheuint1024_free: (a: number, b: number) => void;
1904
+ readonly __wbg_compressedfheint12_free: (a: number, b: number) => void;
1905
+ readonly __wbg_compressedfheint32_free: (a: number, b: number) => void;
1807
1906
  readonly __wbg_compressedfheuint16_free: (a: number, b: number) => void;
1907
+ readonly __wbg_compressedfheuint2_free: (a: number, b: number) => void;
1908
+ readonly __wbg_compressedfheint256_free: (a: number, b: number) => void;
1808
1909
  readonly __wbg_compressedfheuint32_free: (a: number, b: number) => void;
1910
+ readonly __wbg_compressedfheuint14_free: (a: number, b: number) => void;
1911
+ readonly __wbg_compressedfheuint160_free: (a: number, b: number) => void;
1809
1912
  readonly __wbg_compressedfheuint64_free: (a: number, b: number) => void;
1810
- readonly __wbg_compressedfheint2_free: (a: number, b: number) => void;
1811
- readonly __wbg_compressedfheint4_free: (a: number, b: number) => void;
1812
- readonly __wbg_compressedfheint6_free: (a: number, b: number) => void;
1813
- readonly __wbg_compressedfheint8_free: (a: number, b: number) => void;
1814
- readonly __wbg_compressedfheint128_free: (a: number, b: number) => void;
1815
- readonly __wbg_compressedfheint12_free: (a: number, b: number) => void;
1816
1913
  readonly __wbg_compressedfheint14_free: (a: number, b: number) => void;
1914
+ readonly __wbg_compressedfheuint256_free: (a: number, b: number) => void;
1915
+ readonly __wbg_compressedfheuint512_free: (a: number, b: number) => void;
1817
1916
  readonly __wbg_compressedfheint16_free: (a: number, b: number) => void;
1818
- readonly __wbg_compressedfheint32_free: (a: number, b: number) => void;
1917
+ readonly __wbg_compressedfheint6_free: (a: number, b: number) => void;
1918
+ readonly __wbg_compressedfheint8_free: (a: number, b: number) => void;
1919
+ readonly __wbg_compressedfheuint8_free: (a: number, b: number) => void;
1920
+ readonly __wbg_compressedfheint4_free: (a: number, b: number) => void;
1819
1921
  readonly __wbg_compressedfheint64_free: (a: number, b: number) => void;
1820
- readonly fheuint256_decrypt: (a: number, b: number) => [number, number, number];
1821
- readonly fheuint2048_serialize: (a: number) => [number, number, number, number];
1822
- readonly fheuint14_serialize: (a: number) => [number, number, number, number];
1823
- readonly fheuint10_serialize: (a: number) => [number, number, number, number];
1824
- readonly fheuint256_serialize: (a: number) => [number, number, number, number];
1825
- readonly fheint6_serialize: (a: number) => [number, number, number, number];
1826
- readonly fheuint160_serialize: (a: number) => [number, number, number, number];
1827
- readonly fheuint512_serialize: (a: number) => [number, number, number, number];
1828
- readonly fheuint6_serialize: (a: number) => [number, number, number, number];
1829
- readonly fheint4_serialize: (a: number) => [number, number, number, number];
1830
- readonly fheuint2_serialize: (a: number) => [number, number, number, number];
1831
- readonly fheuint8_serialize: (a: number) => [number, number, number, number];
1832
- readonly fheuint4_serialize: (a: number) => [number, number, number, number];
1833
- readonly fheint2_serialize: (a: number) => [number, number, number, number];
1834
- readonly fheint64_serialize: (a: number) => [number, number, number, number];
1835
- readonly fheuint12_serialize: (a: number) => [number, number, number, number];
1836
- readonly fheuint128_serialize: (a: number) => [number, number, number, number];
1837
- readonly fheint8_serialize: (a: number) => [number, number, number, number];
1838
- readonly fheint14_serialize: (a: number) => [number, number, number, number];
1839
- readonly fheint12_serialize: (a: number) => [number, number, number, number];
1840
- readonly fheuint1024_serialize: (a: number) => [number, number, number, number];
1841
- readonly fheuint32_serialize: (a: number) => [number, number, number, number];
1842
- readonly fheint32_serialize: (a: number) => [number, number, number, number];
1843
- readonly fheuint64_serialize: (a: number) => [number, number, number, number];
1844
- readonly fheuint16_serialize: (a: number) => [number, number, number, number];
1845
- readonly fheint16_serialize: (a: number) => [number, number, number, number];
1846
- readonly fheint160_serialize: (a: number) => [number, number, number, number];
1847
- readonly fheint256_serialize: (a: number) => [number, number, number, number];
1848
- readonly fheint128_serialize: (a: number) => [number, number, number, number];
1849
1922
  readonly __wbg_tfhe_free: (a: number, b: number) => void;
1850
1923
  readonly __wbg_booleanciphertext_free: (a: number, b: number) => void;
1851
1924
  readonly __wbg_booleancompressedciphertext_free: (a: number, b: number) => void;
@@ -1879,79 +1952,6 @@ export interface InitOutput {
1879
1952
  readonly boolean_deserialize_public_key: (a: number, b: number) => [number, number, number];
1880
1953
  readonly boolean_serialize_compressed_server_key: (a: number) => [number, number, number, number];
1881
1954
  readonly boolean_deserialize_compressed_server_key: (a: number, b: number) => [number, number, number];
1882
- readonly __wbg_compactpkecrs_free: (a: number, b: number) => void;
1883
- readonly compactpkecrs_serialize: (a: number, b: number) => [number, number, number, number];
1884
- readonly compactpkecrs_deserialize: (a: number, b: number) => [number, number, number];
1885
- readonly compactpkecrs_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
1886
- readonly compactpkecrs_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
1887
- readonly compactpkecrs_from_config: (a: number, b: number) => [number, number, number];
1888
- readonly compactpkecrs_deserialize_from_public_params: (a: number, b: number) => [number, number, number];
1889
- readonly compactpkecrs_safe_deserialize_from_public_params: (a: number, b: number, c: bigint) => [number, number, number];
1890
- readonly __wbg_shortintciphertext_free: (a: number, b: number) => void;
1891
- readonly __wbg_shortintcompressedciphertext_free: (a: number, b: number) => void;
1892
- readonly __wbg_shortintclientkey_free: (a: number, b: number) => void;
1893
- readonly __wbg_shortintpublickey_free: (a: number, b: number) => void;
1894
- readonly __wbg_shortintcompressedpublickey_free: (a: number, b: number) => void;
1895
- readonly __wbg_shortintcompressedserverkey_free: (a: number, b: number) => void;
1896
- readonly __wbg_shortint_free: (a: number, b: number) => void;
1897
- readonly __wbg_shortintparameters_free: (a: number, b: number) => void;
1898
- readonly __wbg_shortintcompactpublickeyencryptionparameters_free: (a: number, b: number) => void;
1899
- readonly shortintparameters_lwe_dimension: (a: number) => number;
1900
- readonly shortintparameters_set_lwe_dimension: (a: number, b: number) => void;
1901
- readonly shortintparameters_glwe_dimension: (a: number) => number;
1902
- readonly shortintparameters_set_glwe_dimension: (a: number, b: number) => void;
1903
- readonly shortintparameters_polynomial_size: (a: number) => number;
1904
- readonly shortintparameters_set_polynomial_size: (a: number, b: number) => void;
1905
- readonly shortintparameters_set_lwe_noise_distribution: (a: number, b: number) => void;
1906
- readonly shortintparameters_glwe_noise_distribution: (a: number) => number;
1907
- readonly shortintparameters_set_glwe_noise_distribution: (a: number, b: number) => void;
1908
- readonly shortintparameters_pbs_base_log: (a: number) => number;
1909
- readonly shortintparameters_set_pbs_base_log: (a: number, b: number) => void;
1910
- readonly shortintparameters_pbs_level: (a: number) => number;
1911
- readonly shortintparameters_set_pbs_level: (a: number, b: number) => void;
1912
- readonly shortintparameters_ks_base_log: (a: number) => number;
1913
- readonly shortintparameters_set_ks_base_log: (a: number, b: number) => void;
1914
- readonly shortintparameters_ks_level: (a: number) => number;
1915
- readonly shortintparameters_set_ks_level: (a: number, b: number) => void;
1916
- readonly shortintparameters_message_modulus: (a: number) => bigint;
1917
- readonly shortintparameters_set_message_modulus: (a: number, b: bigint) => void;
1918
- readonly shortintparameters_carry_modulus: (a: number) => bigint;
1919
- readonly shortintparameters_set_carry_modulus: (a: number, b: bigint) => void;
1920
- readonly shortintparameters_encryption_key_choice: (a: number) => number;
1921
- readonly shortintparameters_set_encryption_key_choice: (a: number, b: number) => void;
1922
- readonly __wbg_shortintnoisedistribution_free: (a: number, b: number) => void;
1923
- readonly shortint_pke_params_name: (a: number) => [number, number];
1924
- readonly shortintcompactpublickeyencryptionparameters_new: (a: number) => number;
1925
- readonly shortintcompactpublickeyencryptionparameters_new_parameters: (a: number, b: number, c: bigint, d: bigint, e: number, f: number, g: number, h: number) => [number, number, number];
1926
- readonly shortint_params_name: (a: number) => [number, number];
1927
- readonly shortintparameters_new: (a: number) => number;
1928
- readonly shortint_new_gaussian_from_std_dev: (a: number) => number;
1929
- readonly shortint_try_new_t_uniform: (a: number) => [number, number, number];
1930
- readonly shortint_new_parameters: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: bigint, k: bigint, l: bigint, m: number, n: number, o: number) => number;
1931
- readonly shortint_new_client_key_from_seed_and_parameters: (a: bigint, b: bigint, c: number) => number;
1932
- readonly shortint_new_client_key: (a: number) => number;
1933
- readonly shortint_new_public_key: (a: number) => number;
1934
- readonly shortint_new_compressed_public_key: (a: number) => number;
1935
- readonly shortint_new_compressed_server_key: (a: number) => number;
1936
- readonly shortint_encrypt: (a: number, b: bigint) => number;
1937
- readonly shortint_encrypt_compressed: (a: number, b: bigint) => number;
1938
- readonly shortint_decompress_ciphertext: (a: number) => number;
1939
- readonly shortint_encrypt_with_public_key: (a: number, b: bigint) => number;
1940
- readonly shortint_encrypt_with_compressed_public_key: (a: number, b: bigint) => number;
1941
- readonly shortint_decrypt: (a: number, b: number) => bigint;
1942
- readonly shortint_serialize_ciphertext: (a: number) => [number, number, number, number];
1943
- readonly shortint_deserialize_ciphertext: (a: number, b: number) => [number, number, number];
1944
- readonly shortint_serialize_compressed_ciphertext: (a: number) => [number, number, number, number];
1945
- readonly shortint_deserialize_compressed_ciphertext: (a: number, b: number) => [number, number, number];
1946
- readonly shortint_serialize_client_key: (a: number) => [number, number, number, number];
1947
- readonly shortint_deserialize_client_key: (a: number, b: number) => [number, number, number];
1948
- readonly shortint_serialize_public_key: (a: number) => [number, number, number, number];
1949
- readonly shortint_deserialize_public_key: (a: number, b: number) => [number, number, number];
1950
- readonly shortint_serialize_compressed_public_key: (a: number) => [number, number, number, number];
1951
- readonly shortint_deserialize_compressed_public_key: (a: number, b: number) => [number, number, number];
1952
- readonly shortint_serialize_compressed_server_key: (a: number) => [number, number, number, number];
1953
- readonly shortint_deserialize_compressed_server_key: (a: number, b: number) => [number, number, number];
1954
- readonly shortintparameters_lwe_noise_distribution: (a: number) => number;
1955
1955
  readonly __wbg_wbg_rayon_poolbuilder_free: (a: number, b: number) => void;
1956
1956
  readonly wbg_rayon_poolbuilder_numThreads: (a: number) => number;
1957
1957
  readonly wbg_rayon_poolbuilder_receiver: (a: number) => number;
package/tfhe.js CHANGED
@@ -170,40 +170,6 @@ function _assertClass(instance, klass) {
170
170
  throw new Error(`expected instance of ${klass.name}`);
171
171
  }
172
172
  }
173
-
174
- function takeFromExternrefTable0(idx) {
175
- const value = wasm.__wbindgen_export_2.get(idx);
176
- wasm.__externref_table_dealloc(idx);
177
- return value;
178
- }
179
-
180
- function getArrayU8FromWasm0(ptr, len) {
181
- ptr = ptr >>> 0;
182
- return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
183
- }
184
-
185
- function passArray8ToWasm0(arg, malloc) {
186
- const ptr = malloc(arg.length * 1, 1) >>> 0;
187
- getUint8ArrayMemory0().set(arg, ptr / 1);
188
- WASM_VECTOR_LEN = arg.length;
189
- return ptr;
190
- }
191
-
192
- export function init_panic_hook() {
193
- wasm.init_panic_hook();
194
- }
195
-
196
- /**
197
- * @param {TfheServerKey} server_key
198
- */
199
- export function set_server_key(server_key) {
200
- _assertClass(server_key, TfheServerKey);
201
- const ret = wasm.set_server_key(server_key.__wbg_ptr);
202
- if (ret[1]) {
203
- throw takeFromExternrefTable0(ret[0]);
204
- }
205
- }
206
-
207
173
  /**
208
174
  * @param {ShortintCompactPublicKeyEncryptionParametersName} param
209
175
  * @returns {string}
@@ -221,6 +187,11 @@ export function shortint_pke_params_name(param) {
221
187
  }
222
188
  }
223
189
 
190
+ function takeFromExternrefTable0(idx) {
191
+ const value = wasm.__wbindgen_export_2.get(idx);
192
+ wasm.__externref_table_dealloc(idx);
193
+ return value;
194
+ }
224
195
  /**
225
196
  * @param {ShortintParametersName} param
226
197
  * @returns {string}
@@ -238,6 +209,33 @@ export function shortint_params_name(param) {
238
209
  }
239
210
  }
240
211
 
212
+ function getArrayU8FromWasm0(ptr, len) {
213
+ ptr = ptr >>> 0;
214
+ return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
215
+ }
216
+
217
+ function passArray8ToWasm0(arg, malloc) {
218
+ const ptr = malloc(arg.length * 1, 1) >>> 0;
219
+ getUint8ArrayMemory0().set(arg, ptr / 1);
220
+ WASM_VECTOR_LEN = arg.length;
221
+ return ptr;
222
+ }
223
+
224
+ export function init_panic_hook() {
225
+ wasm.init_panic_hook();
226
+ }
227
+
228
+ /**
229
+ * @param {TfheServerKey} server_key
230
+ */
231
+ export function set_server_key(server_key) {
232
+ _assertClass(server_key, TfheServerKey);
233
+ const ret = wasm.set_server_key(server_key.__wbg_ptr);
234
+ if (ret[1]) {
235
+ throw takeFromExternrefTable0(ret[0]);
236
+ }
237
+ }
238
+
241
239
  /**
242
240
  * @param {number} num_threads
243
241
  * @returns {Promise<any>}
package/tfhe_bg.wasm CHANGED
Binary file