from abc import ABC, abstractmethod
[docs]class AbstractCPRStrategy(ABC):
[docs] @staticmethod
@abstractmethod
def get_payoff(a: float, b: float, extraction: float, group_extraction: float, fine: float = 0,
cost: float = 0, commitment: bool = False) -> float:
pass
[docs] @abstractmethod
def would_like_to_commit(self) -> bool:
pass
[docs] @abstractmethod
def proposes_commitment(self) -> bool:
pass
[docs] @abstractmethod
def is_commitment_validated(self, nb_committers: int) -> bool:
pass
[docs] @abstractmethod
def type(self) -> str:
pass
[docs] def __str__(self) -> str:
return "AbstractCPRStrategy"