from abc import ABC, abstractmethod
from typing import List, Optional
from src.domain.entities.user import User

class UserRepository(ABC):
    @abstractmethod
    def get_user_by_email(self, email: str) -> Optional[User]: pass
    @abstractmethod
    def get_user_by_username(self, username: str) -> Optional[User]: pass
    @abstractmethod
    def save(self, user: User) -> User: pass
    @abstractmethod
    def get_relationship_managers(self) -> List[User]: pass
