from abc import ABC from abc import abstractmethod from datetime import datetime from typing import Any from src.application.domain.entities import KycEntity class IKycRepository(ABC): @abstractmethod async def create_started_session( self, *, user_id: str, user_token: str | None, client_user_token: str | None, link: str | None, qr_code: str | None, expires_at: datetime | None, error: str | None, ) -> None: raise NotImplementedError @abstractmethod async def update_session_result( self, *, user_id: str, user_token: str, status: str, done_state: bool | None, set_id: str | None, result_data: Any, error: str | None, ) -> None: raise NotImplementedError @abstractmethod async def expire_started_sessions(self,*,user_id: str,now: datetime) -> None: raise NotImplementedError @abstractmethod async def expire_all_started_sessions(self,*,now: datetime) -> None: raise NotImplementedError @abstractmethod async def get_started_sessions(self,*,now: datetime,limit: int) -> list[KycEntity]: raise NotImplementedError @abstractmethod async def get_active_session(self,*,user_id: str,now: datetime) -> KycEntity | None: raise NotImplementedError @abstractmethod async def get_latest_session(self,*,user_id: str) -> KycEntity | None: raise NotImplementedError