"""Module for time interface."""

from __future__ import annotations

from abc import ABC, abstractmethod
from datetime import datetime, tzinfo

from ..module import Module


class Time(Module, ABC):
    """Base class for tplink time module."""

    @property
    @abstractmethod
    def time(self) -> datetime:
        """Return timezone aware current device time."""

    @property
    @abstractmethod
    def timezone(self) -> tzinfo:
        """Return current timezone."""

    @abstractmethod
    async def set_time(self, dt: datetime) -> dict:
        """Set the device time."""