use async_trait::async_trait;
use crate::entities::Council;
use crate::error::DomainError;
use crate::value_objects::Specialty;
#[async_trait]
pub trait CouncilRegistryPort: Send + Sync {
async fn register(&self, council: Council) -> Result<(), DomainError>;
async fn replace(&self, council: Council) -> Result<(), DomainError>;
async fn get(&self, specialty: &Specialty) -> Result<Council, DomainError>;
async fn list(&self) -> Result<Vec<Council>, DomainError>;
async fn delete(&self, specialty: &Specialty) -> Result<(), DomainError>;
async fn contains(&self, specialty: &Specialty) -> Result<bool, DomainError>;
}