use super::entities::{Group, RefreshToken, Role, User};
use crate::common::errors::DomainError;
use crate::common::value_objects::{Email, PasswordHash, SystemId};
use async_trait::async_trait;
// --- UserRepository ---
#[async_trait]
pub trait UserRepository: Send + Sync {
async fn find_by_id(&self, id: &SystemId) -> Result