from typing import Protocol from app.models.user import User class IUserRepository(Protocol): async def get_by_telegram_id(self, telegram_id: int) -> User | None: ... async def create( self, *, telegram_id: int, username: str | None, first_name: str | None, referrer_id: int | None, ) -> User: ... async def update_profile( self, user: User, *, username: str | None, first_name: str | None, ) -> User: ... async def set_referrer_if_unset( self, user: User, referrer_internal_id: int, ) -> None: ...