from abc import ABC, abstractmethod
from typing import Any, Dict


class ActionInterface(ABC):
    """ Clase interfaz de las acciones de CSS-Cuscatlan"""

    def __init__(self, app) -> None:
        self.app = app

    @abstractmethod
    def parser(self, descriptor: Dict[str, Any]):
        """Método que parsea los parámetros de entrada"""
        raise NotImplementedError

    @abstractmethod
    def process(self, source_obj):
        """Método que ejecuta la lógica del script"""
        raise NotImplementedError

    @abstractmethod
    def response(self):
        """Método que devuelve la respuesta del script ejecutado"""
        raise NotImplementedError
