use thiserror::Error;
use ave_core::error::Error as CoreError;
use ave_core::helpers::sink::SinkError;
#[derive(Debug, Clone, Error)]
pub enum BridgeError {
#[error(transparent)]
Core(#[from] CoreError),
#[error("Invalid subject identifier: {0}")]
InvalidSubjectId(String),
#[error("Invalid request identifier: {0}")]
InvalidRequestId(String),
#[error("Invalid public key: {0}")]
InvalidPublicKey(String),
#[error("Invalid signature: {0}")]
InvalidSignature(String),
#[error("Failed to create keys directory: {0}")]
KeyDirectoryCreation(String),
#[error("Failed to read private key: {0}")]
KeyRead(String),
#[error("Failed to decrypt private key: ensure your password is correct")]
KeyDecrypt(String),
#[error("Failed to restore key pair: {0}")]
KeyRestore(String),
#[error("Failed to generate key pair: {0}")]
KeyGeneration(String),
#[error("Failed to encrypt private key: {0}")]
KeyEncrypt(String),
#[error("Failed to store private key: {0}")]
KeyWrite(String),
#[error("Failed to build configuration: {0}")]
ConfigBuild(String),
#[error("Invalid configuration format: {0}")]
ConfigDeserialize(String),
#[error("Invalid event request format: {0}")]
InvalidEventRequest(String),
#[error("Sink authentication failed: {0}")]
SinkAuth(#[from] SinkError),
}