<?php

declare(strict_types=1);

namespace Drupal\flowdrop\Plugin\FlowDropNodeProcessor;

/**
 * Marker interface for node processors that have external side effects.
 *
 * A side-effecting processor mutates state outside the workflow execution —
 * it writes, sends, persists, or otherwise changes the world (e.g. saving an
 * entity, making an HTTP request, logging, displaying a message, or writing to
 * scoped memory). Pure processors that only transform their inputs into
 * outputs (and storage that stays inside the graph state) are NOT side
 * effecting.
 *
 * Because such nodes are not safe to re-run freely, this distinction matters
 * for dry-run/preview, caching, replay/retry, and test isolation — not just
 * the editor UI. Consumers should detect it with instanceof/is_subclass_of on
 * the plugin class, which is statically checkable and needs no instantiation.
 *
 * This interface is intentionally empty; it is a pure type marker.
 *
 * @see \Drupal\flowdrop\Plugin\FlowDropNodeProcessor\BranchingNodeProcessorInterface
 * @see \Drupal\flowdrop\Plugin\FlowDropNodeProcessor\TriggerNodeProcessorInterface
 *
 * @api
 */
interface HasSideEffectsInterface {
}
