use thiserror::Error;
use crate::{error::LibraryError, group::errors::*};
use openmls_rust_crypto::MemoryStorage;
#[derive(Error, Debug, PartialEq)]
pub enum SetupError<StorageError> {
#[error("")]
UnknownGroupId,
#[error("")]
UnknownClientId,
#[error("")]
NotEnoughClients,
#[error("")]
ClientAlreadyInGroup,
#[error("")]
ClientNotInGroup,
#[error("")]
NoFreshKeyPackage,
#[error(transparent)]
ClientError(#[from] ClientError<StorageError>),
#[error(transparent)]
ExportSecretError(#[from] ExportSecretError),
#[error(transparent)]
LibraryError(#[from] LibraryError),
#[error("")]
Unknown,
}
#[derive(Debug)]
pub enum SetupGroupError {
NotEnoughMembers,
}
#[derive(Error, Debug, PartialEq)]
pub enum ClientError<StorageError> {
#[error("")]
NoMatchingKeyPackage,
#[error("")]
NoMatchingCredential,
#[error("")]
CiphersuiteNotSupported,
#[error("")]
NoMatchingGroup,
#[error("")]
NoCiphersuite,
#[error(transparent)]
FailedToJoinGroup(#[from] WelcomeError<StorageError>),
#[error(transparent)]
TlsCodecError(tls_codec::Error),
#[error("See ProcessMessageError for more details.")]
ProcessMessageError(ProcessMessageError<StorageError>),
#[error(transparent)]
AddMembersError(#[from] AddMembersError<StorageError>),
#[error(transparent)]
RemoveMembersError(#[from] RemoveMembersError<StorageError>),
#[error(transparent)]
ProposeAddMemberError(#[from] ProposeAddMemberError<StorageError>),
#[error(transparent)]
ProposeRemoveMemberError(#[from] ProposeRemoveMemberError<StorageError>),
#[error("Error exporting secret")]
ExportSecretError(ExportSecretError),
#[error(transparent)]
NewGroupError(#[from] NewGroupError<StorageError>),
#[error(transparent)]
SelfUpdateError(#[from] SelfUpdateError<StorageError>),
#[error(transparent)]
ProposeSelfUpdateError(#[from] ProposeSelfUpdateError<StorageError>),
#[error(transparent)]
MergePendingCommitError(#[from] MergePendingCommitError<StorageError>),
#[error(transparent)]
MergeCommitError(#[from] MergeCommitError<StorageError>),
#[error(transparent)]
KeyStoreError(#[from] StorageError),
#[error(transparent)]
LibraryError(LibraryError),
#[error("")]
Unknown,
}