from abc import abstractmethod

from model.event_dispatch import EventDispatch
from model.log import LogEntry
from model.resync import ResyncRequest
from typing import List


class LogRepositoryModel(object):
    @abstractmethod
    def insert_entry(self, log_entry):
        # type: (LogEntry) -> EventDispatch
        raise NotImplementedError()

    @abstractmethod
    def fetch_resync_events(self, resync_request):
        # type: (ResyncRequest) -> List[EventDispatch]
        raise NotImplementedError()
