"""Repository protocol for Users Profiles persistence."""

from __future__ import annotations

from typing import Protocol, runtime_checkable

from .dto import UserProfileReadDTO, UserProfileUpdateDTO


@runtime_checkable
class UserProfileRepositoryProtocol(Protocol):
	async def get_by_user_id(self, user_id: str) -> UserProfileReadDTO | None:
		...

	async def upsert(self, user_id: str, payload: UserProfileUpdateDTO) -> UserProfileReadDTO:
		...

	async def delete(self, user_id: str) -> bool:
		...
