from UniTAP.libs.lib_tsi.tsi_io import PortIO
from .pr_sink_status import SinkPanelReplayStatus, SinkPanelSelfRefreshStatus
from .pr_sink_caps import SinkPanelReplayCaps, SinkPanelSelfRefreshCaps


class SinkPanelReplay:

    def __init__(self, port_io: PortIO):
        self.__io = port_io
        self.__status = SinkPanelReplayStatus(self.__io)
        self.__caps = SinkPanelReplayCaps(self.__io)

    @property
    def status(self) -> SinkPanelReplayStatus:
        """
        Returns object of class `SinkPanelReplayStatus` for working with Sink Panel Replay Status.

        Returns:
            object of `SinkPanelReplayStatus` type
        """
        return self.__status

    @property
    def caps(self) -> SinkPanelReplayCaps:
        """
        Returns object of class `SinkPanelReplayCaps` for configuration Sink Panel Replay capabilities.

        Returns:
            object of `SinkPanelReplayCaps` type
        """
        return self.__caps


class SinkPanelSelfRefresh:

    def __init__(self, port_io: PortIO):
        self.__io = port_io
        self.__status = SinkPanelSelfRefreshStatus(self.__io)
        self.__caps = SinkPanelSelfRefreshCaps(self.__io)

    @property
    def status(self) -> SinkPanelSelfRefreshStatus:
        """
        Returns object of class `SinkPanelSelfRefreshStatus` for working with Sink Panel Self Refresh Status.

        Returns:
            object of `SinkPanelSelfRefreshStatus` type
        """
        return self.__status

    @property
    def caps(self) -> SinkPanelSelfRefreshCaps:
        """
        Returns object of class `SinkPanelSelfRefreshCaps` for configuration Sink Panel Self Refresh capabilities.

        Returns:
            object of `SinkPanelSelfRefreshCaps` type
        """
        return self.__caps
