use async_trait::async_trait; use paginator_rs::PaginationParams; use paginator_utils::PaginatorResponse; use imphnen_utils::AppError; use super::user::UserEntity; use super::repository::UserListItem; #[async_trait] pub trait UserService: Send + Sync { async fn list(&self, params: PaginationParams) -> Result, AppError>; async fn get(&self, id: String) -> Result; async fn get_me(&self, user_id: String) -> Result; async fn get_by_email(&self, email: String) -> Result; async fn create(&self, entity: UserEntity) -> Result; async fn update(&self, entity: UserEntity) -> Result; async fn delete(&self, id: String) -> Result; async fn set_active_status(&self, id: String, is_active: bool) -> Result; async fn update_password(&self, email: String, old_password: String, new_password: String) -> Result; }