from io import StringIO
from typing import Tuple, Optional

from clarabot_nano_common.common.handler.base import AbstractNanoHandler

from clarabot_nano.gateway.config import GatewayConfig
from clarabot_nano.gateway.state.gateway import GatewayState


class AbstractNanoGatewayHandler(AbstractNanoHandler):
    helper: GatewayState
    extracted_config: GatewayConfig

    async def _create_request_key(self, secure: bool = False) -> Tuple[bool, Optional[list], int]:
        raise NotImplementedError()

    def _log_message(self) -> str:
        raise NotImplementedError()

    def build_error_message(self, buf: StringIO) -> None:
        raise NotImplementedError()
