from abc import ABC, abstractmethod


class PMSConnector(ABC):
    provider = "base"

    def __init__(self, config):
        self.config = config or {}

    @abstractmethod
    def getGuestByRoom(self, room_id):
        raise NotImplementedError

    @abstractmethod
    def getReservation(self, room_id):
        raise NotImplementedError

    @abstractmethod
    def verifyGuest(self, room_id, secure_room_id=None):
        raise NotImplementedError

    @abstractmethod
    def getCheckedInGuests(self):
        raise NotImplementedError

    @abstractmethod
    def getRoomStatus(self, room_id):
        raise NotImplementedError

    @abstractmethod
    def postChargeToRoom(self, charge):
        raise NotImplementedError

    @abstractmethod
    def getCheckInStatus(self, room_id):
        raise NotImplementedError

    @abstractmethod
    def getCheckOutStatus(self, room_id):
        raise NotImplementedError
