<?php

declare(strict_types=1);

namespace Drupal\flowdrop\Plugin\FlowDropNodeProcessor;

/**
 * Marker interface for trigger node processors.
 *
 * Processors that implement this interface are considered trigger nodes,
 * which can initiate workflow executions. When a workflow is triggered
 * by an event, only the trigger node that fired the event should be
 * executed, while all other trigger nodes in the workflow should be excluded.
 *
 * This interface is intentionally empty. It serves as a type marker used by
 * JobGenerationService::isTriggerNodeProcessor() to identify trigger nodes
 * during job generation — trigger nodes are excluded from the pipeline unless
 * they are the specific trigger that fired the workflow.
 *
 * Using instanceof/is_subclass_of checks with this marker interface provides
 * compile-time safety that attribute-based detection would not.
 *
 * A trigger is a kind of start node (Trigger ⊂ Start): nothing upstream fires
 * it, so it takes no incoming trigger input. This interface therefore extends
 * StartNodeProcessorInterface, and every trigger is automatically treated as a
 * workflow entry point by the metadata resolver.
 *
 * @see \Drupal\flowdrop\Plugin\FlowDropNodeProcessor\StartNodeProcessorInterface
 * @see \Drupal\flowdrop_trigger\Plugin\FlowDropNodeProcessor\AbstractTrigger
 * @see \Drupal\flowdrop_pipeline\Service\JobGenerationService::isTriggerNodeProcessor()
 *
 * @api
 */
interface TriggerNodeProcessorInterface extends StartNodeProcessorInterface {
}
