#![deny(unsafe_code)]
#![warn(rust_2018_idioms)]
#![allow(missing_docs, clippy::too_many_arguments, dead_code, unused_imports)]
#![allow(clippy::duplicated_attributes, clippy::int_plus_one)]
#![allow(clippy::needless_range_loop, clippy::assertions_on_constants)]
#![allow(clippy::unnecessary_cast, clippy::let_and_return)]
#![allow(clippy::expect_fun_call, clippy::manual_range_contains)]
#![allow(clippy::assign_op_pattern, clippy::clone_on_copy)]
#![allow(clippy::doc_overindented_list_items, clippy::manual_div_ceil)]
#![allow(clippy::needless_borrows_for_generic_args)]
#![allow(
unused_variables,
unused_unsafe,
deprecated,
unused_assignments,
unused_mut
)]
#![cfg_attr(not(feature = "std"), no_std)]
#[cfg(not(feature = "std"))]
extern crate alloc;
#[cfg(feature = "ml-kem")]
pub mod kem;
#[cfg(feature = "ml-dsa")]
pub mod dsa;
#[cfg(feature = "ml-dsa-native")]
pub mod ml_dsa;
#[cfg(feature = "ml-dsa-native")]
pub mod arcanum_dsa;
#[cfg(feature = "slh-dsa")]
pub mod slh_dsa;
#[cfg(feature = "hybrid")]
pub mod hybrid;
mod traits;
pub use traits::{KeyEncapsulation, PostQuantumSignature};
#[cfg(feature = "ml-kem")]
pub use kem::{MlKem512, MlKem768, MlKem1024};
#[cfg(feature = "ml-dsa")]
pub use dsa::{MlDsa44Ops, MlDsa65, MlDsa87Ops};
#[cfg(feature = "hybrid")]
pub use hybrid::X25519MlKem768;
pub mod prelude {
pub use crate::traits::{KeyEncapsulation, PostQuantumSignature};
#[cfg(feature = "ml-kem")]
pub use crate::kem::{MlKem512, MlKem768, MlKem1024};
#[cfg(feature = "ml-dsa")]
pub use crate::dsa::{MlDsa44Ops, MlDsa65, MlDsa87Ops};
#[cfg(feature = "hybrid")]
pub use crate::hybrid::X25519MlKem768;
}