from abc import (
    ABCMeta,
    abstractmethod,
)
from datetime import datetime
from typing import List


class OrderRepository(object):
    __metaclass__ = ABCMeta

    @abstractmethod
    def get_paid_ticket(
        self,
        business_period,    # type: str
    ):
        # type: (...) -> dict

        raise NotImplementedError

    @abstractmethod
    def get_paid_orders_ticket(
        self,
        business_period,    # type: str
    ):
        # type: (...) -> List

        raise NotImplementedError

    @abstractmethod
    def get_paid_orders(
        self,
        operator_id,    # type: str
        initial_date,   # type: datetime
        end_date,       # type: datetime
    ):
        # type: (...) -> List

        raise NotImplementedError

    @abstractmethod
    def get_orders_items(
        self,
        paid_orders,    # type: List
    ):
        # type: (...) -> List

        raise NotImplementedError
