from ..uftp import DsoPortfolioQuery, DsoPortfolioUpdate, UsefRole
from .base_client import ShapeshifterClient


class ShapeshifterDsoCroClient(ShapeshifterClient):
    """
    Client that allows the DSO to connect to the CRO.
    """

    sender_role = UsefRole.DSO
    recipient_role = UsefRole.CRO

    def send_dso_portfolio_update(self, message: DsoPortfolioUpdate) -> None:
        """
        The DSOPortfolioUpdate is used by the DSO to indicate on which
        congestion points it wants to engage in flexibility trading.
        """
        self._send_message(message)

    def send_dso_portfolio_query(self, message: DsoPortfolioQuery) -> None:
        """
        DSOPortfolioQuery is used by DSOs to discover which AGRs represent
        connections on its registered congestion point(s).
        """
        self._send_message(message)
