use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
#[error("IO error: {0}")]
Io(#[from] std::io::Error),
#[error("Database error: {0}")]
Db(#[from] neuxdb::Error),
#[error("Configuration error: {0}")]
Config(#[from] neuxcfg::NeuxcfgError),
#[error("Crypto error: {0}")]
Crypto(#[from] age_crypto::Error),
#[error("Key generation error: {0}")]
KeyGen(#[from] age_setup::Error),
#[error("KDF error: {0}")]
Kdf(String),
#[error("Serialization error: {0}")]
Serde(#[from] serde_json::Error),
#[error("Account not found: {0}")]
AccountNotFound(String),
#[error("Account already exists: {0}")]
AccountExists(String),
#[error("Invalid master password")]
InvalidMasterPassword,
#[error("Decryption failed: {0}")]
DecryptionFailed(String),
#[error("Encryption failed: {0}")]
EncryptionFailed(String),
}
pub type Result<T> = std::result::Result<T, Error>;
impl From<argon2::password_hash::Error> for Error {
fn from(err: argon2::password_hash::Error) -> Self {
Error::Kdf(err.to_string())
}
}