1#![warn(clippy::expect_used)]
5#![warn(clippy::unwrap_used)]
6#![warn(clippy::todo)]
7#![warn(clippy::dbg_macro)]
8
9use nym_bls12_381_fork::Scalar;
10use std::sync::OnceLock;
11
12pub use crate::error::CompactEcashError;
13pub use crate::traits::Bytable;
14pub use common_types::{BlindedSignature, Signature};
15pub use helpers::{date_scalar, type_scalar};
16pub use nym_bls12_381_fork::G1Projective;
17pub use scheme::aggregation::aggregate_verification_keys;
18pub use scheme::aggregation::aggregate_wallets;
19pub use scheme::identify;
20pub use scheme::keygen::ttp_keygen;
21pub use scheme::keygen::{generate_keypair_user, generate_keypair_user_from_seed};
22pub use scheme::keygen::{
23 KeyPairAuth, PublicKeyUser, SecretKeyAuth, SecretKeyUser, VerificationKeyAuth,
24};
25pub use scheme::setup;
26pub use scheme::withdrawal::issue;
27pub use scheme::withdrawal::issue_verify;
28pub use scheme::withdrawal::withdrawal_request;
29pub use scheme::withdrawal::WithdrawalRequest;
30pub use scheme::PartialWallet;
31pub use scheme::PayInfo;
32pub use setup::GroupParameters;
33pub use traits::Base58;
34
35pub mod common_types;
36pub mod constants;
37pub mod error;
38mod helpers;
39pub mod proofs;
40pub mod scheme;
41pub mod tests;
42mod traits;
43pub mod utils;
44
45pub type Attribute = Scalar;
46pub type EncodedTicketType = u8;
47pub type EncodedDate = u32;
48
49pub fn ecash_parameters() -> &'static setup::Parameters {
50 static ECASH_PARAMS: OnceLock<setup::Parameters> = OnceLock::new();
51 ECASH_PARAMS.get_or_init(|| setup::Parameters::new(constants::NB_TICKETS))
52}
53
54pub fn ecash_group_parameters() -> &'static setup::GroupParameters {
55 static ECASH_PARAMS: OnceLock<setup::GroupParameters> = OnceLock::new();
56 ECASH_PARAMS.get_or_init(|| setup::GroupParameters::new(constants::ATTRIBUTES_LEN))
57}
58
59pub(crate) fn binary_serialiser() -> impl bincode::Options {
61 use bincode::Options;
62 bincode::DefaultOptions::new()
63 .with_big_endian()
64 .with_varint_encoding()
65}