from abc import ABC, abstractmethod

from app.domain.entities.settings import CompanyProfile, GeneralSetting


class SettingsRepository(ABC):
    @abstractmethod
    async def get_general(self, company_id: str) -> GeneralSetting | None:
        pass

    @abstractmethod
    async def get_latest_general(self) -> GeneralSetting | None:
        pass

    @abstractmethod
    async def upsert_general(self, setting: GeneralSetting) -> GeneralSetting:
        pass

    @abstractmethod
    async def get_company_profile(self, company_id: str) -> CompanyProfile | None:
        pass

    @abstractmethod
    async def upsert_company_profile(self, profile: CompanyProfile) -> CompanyProfile:
        pass

