Commands to execute */ public function handle(DomainEvent $event): array; /** * Get events this saga is interested in * * @return array Event class names */ public function subscribedTo(): array; /** * Get current saga state */ public function getState(): SagaState; /** * Check if saga is completed */ public function isCompleted(): bool; /** * Compensate (rollback) saga on failure * Returns compensation commands * * @return array Compensation commands */ public function compensate(string $reason): array; }