from abc import (
    ABC,
    abstractmethod,
)
from typing import (
    Optional,
    Union,
)

from nreports.model import ProductData


class ProductRepository(ABC):

    @abstractmethod
    def get_product_data(
        self,
        product_id: Union[int, str],
    ) -> Optional[ProductData]:

        raise NotImplementedError()
