from abc import ABCMeta, abstractmethod
from typing import List, Dict

from model.payment import PaymentType


class PaymentServiceModel(object):
    __metaclass__ = ABCMeta

    @abstractmethod
    def get_payment_types(
            self,
    ):
        # type: (...) -> List[PaymentType]

        raise NotImplementedError

    @abstractmethod
    def format_payment_types(
        self,
        tender_types    # type: List[Dict[int, str]]
    ):
        # type: (...) -> List[PaymentType]

        raise NotImplementedError

    def get_tender_details(
        self,
        payment_data,    # type: OrderInsertPaymentRequest
    ):
        # type: (...) -> str

        raise NotImplementedError
