#[cfg(feature = "serde")]
mod serde;
mod keys;
use thiserror::Error;
#[cfg(all(
feature = "amneziawg-1",
feature = "amneziawg-2",
not(feature = "__amneziawg_internal"),
))]
compile_error!("Incompatible feature-flags enabled: choose either `amneziawg-1` or `amneziawg-2`");
#[cfg(feature = "amneziawg-1")]
#[cfg_attr(docsrs, doc(cfg(feature = "amneziawg-1")))]
pub mod amneziawg1;
#[cfg(feature = "amneziawg-2")]
#[cfg_attr(docsrs, doc(cfg(feature = "amneziawg-2")))]
pub mod amneziawg2;
#[cfg(all(feature = "amneziawg-1", any(doc, not(feature = "__amneziawg_internal"))))]
#[cfg_attr(docsrs, doc(cfg(feature = "amneziawg-1")))]
pub use amneziawg1::*;
#[cfg(feature = "amneziawg-2")]
#[cfg_attr(docsrs, doc(cfg(feature = "amneziawg-2")))]
pub use amneziawg2::*;
pub use keys::*;
#[derive(Error, Debug, PartialEq)]
pub enum WireguardError {
#[error("invalid private key")]
InvalidPrivateKey,
#[error("invalid public key")]
InvalidPublicKey,
#[error("invalid preshared key")]
InvalidPresharedKey,
#[error("no private key provided")]
NoPrivateKeyProvided,
#[error("no assigned ip")]
NoAssignedIP,
#[cfg(any(feature = "amneziawg-1", feature = "amneziawg-2"))]
#[error("invalid amnezia setting: {0}")]
InvalidAmneziaSetting(String),
}
pub type WireguardResult<T> = Result<T, WireguardError>;