<?php

declare(strict_types=1);

namespace Plugin\tnt_mcp\src\Mcp\Mode;

/**
 * Reversibility class every MCP endpoint/tool MUST declare (see the Tool contract's
 * `endpointClass()`). It is the single input the {@see ModeGuard} uses to decide whether an
 * endpoint may run in {@see Mode::Limited}.
 *
 * - {@see EndpointClass::Reversible}: reads, and writes whose effect can be undone (toggle a flag,
 *   edit a field, create a draft). Allowed in every mode.
 * - {@see EndpointClass::Destructive}: erases or irreversibly mutates data (delete, hard-cancel,
 *   send an external message, capture a payment). Allowed only in {@see Mode::Full}.
 *
 * Fail-safe: the guard treats an absent/unknown class as Destructive, so forgetting to classify a
 * new endpoint denies it in limited mode rather than exposing it.
 */
enum EndpointClass
{
    case Reversible;
    case Destructive;
}
