message_flow/sagas/orchestration/saga_definition.py (17 lines of code) (raw):

from typing import Protocol, TypeVar from message_flow.messaging.common import IMessage from message_flow.sagas.orchestration.saga_actions import SagaActions __all__ = ["SagaDefinition"] Data = TypeVar("Data") class SagaDefinition(Protocol[Data]): def start(self, saga_data: Data) -> SagaActions[Data]: ... def handle_reply( self, saga_type: str, saga_id: str, current_state: str, saga_data: Data, message: IMessage, ) -> SagaActions[Data]: ...