from __future__ import annotations from abc import ABC from abc import abstractmethod from src.application.domain.entities import UserEntity class IUserRepository(ABC): @abstractmethod async def get_user_by_id(self, user_id: str) -> UserEntity: raise NotImplementedError @abstractmethod async def set_phone(self, user_id: str, phone: str) -> UserEntity: raise NotImplementedError @abstractmethod async def set_bank_details(self, user_id: str, **fields: str) -> UserEntity: raise NotImplementedError @abstractmethod async def set_encrypted_mnemonic(self, user_id: str, encrypted_mnemonic: str) -> UserEntity: raise NotImplementedError @abstractmethod async def get_password_hash(self, user_id: str) -> str: raise NotImplementedError @abstractmethod async def set_password(self, user_id: str, password_hash: str) -> UserEntity: raise NotImplementedError @abstractmethod async def set_email(self, user_id: str, email: str) -> UserEntity: raise NotImplementedError @abstractmethod async def email_exists(self, email: str) -> bool: raise NotImplementedError @abstractmethod async def get_user_by_email(self, email: str) -> UserEntity | None: raise NotImplementedError @abstractmethod async def set_avatar_link(self, user_id: str, avatar_link: str | None) -> UserEntity: raise NotImplementedError