from abc import abstractmethod
from collections.abc import Awaitable, Callable, Sequence
from typing import Any

from csirtmu.core.temporal import TemporalWorkflow
from temporalio import workflow


class LoggedWorkflow(TemporalWorkflow):
    @classmethod
    @abstractmethod
    def get_activities(cls) -> Sequence[Callable[..., Awaitable[Any]]]: ...

    @classmethod
    def log_workflow(cls) -> None:
        workflow.logger.info("Starting workflow: ")
