use crate::hhd::signatures::SignatureSchemeError;
use crate::hhd::slip10::Slip10Error;
#[derive(Debug, thiserror::Error)]
pub enum KeyError {
#[error("Invalid scheme")]
InvalidScheme(#[from] SignatureSchemeError),
#[error("Signature generation failed: {0}")]
SigningFailed(String),
#[error("Signature verification failed: {0}")]
VerificationFailed(String),
#[error("Invalid signature format")]
InvalidSignatureFormat,
#[error("Invalid key format")]
InvalidKeyFormat,
#[error("Invalid derivation path: {0}")]
InvalidDerivationPath(String),
#[error("BIP32 error: {0}")]
Bip32(#[from] bip32::Error),
#[error("SLIP10 error: {0}")]
Slip10(#[from] Slip10Error),
#[error("Key generation failed: {0}")]
KeyGenerationFailed(String),
#[error("Serialization failed: {0}")]
SerializationFailed(String),
#[error("Deserialization failed: {0}")]
DeserializationFailed(String),
#[error("ECDSA error: {0}")]
EcdsaError(String),
#[error("Falcon error: {0}")]
FalconError(String),
#[error("Invalid seed length: expected {expected}, got {actual}")]
InvalidSeedLength {
expected: usize,
actual: usize,
},
#[error("Unsupported signature scheme")]
UnsupportedScheme,
}