from __future__ import annotations from typing import Protocol, runtime_checkable from src.application.abstractions.repositories import IUserRepository, ISessionRepository @runtime_checkable class IUnitOfWork(Protocol): async def __aenter__(self) -> "IUnitOfWork": ... async def __aexit__(self, exc_type, exc_val, exc_tb) -> None: ... async def commit(self) -> None: ... async def rollback(self) -> None: ... @property def user_repository(self) -> IUserRepository: ... @property def session_repository(self) -> ISessionRepository: ...