<?php

declare(strict_types=1);

namespace App\Framework\Mcp\Shared\Formatters;

use App\Framework\Mcp\Core\ValueObjects\OutputFormat;

/**
 * Interface für Output-Formatter
 *
 * Definiert einheitliche API für alle Ausgabeformate
 */
interface OutputFormatter
{
    /**
     * Formatiert Daten in das spezifische Format
     *
     * @param mixed $data Die zu formatierenden Daten
     * @return array Formatierte Ausgabe mit 'content' und 'format' Keys
     */
    public function format(mixed $data): array;

    /**
     * Prüft ob dieser Formatter das angegebene Format unterstützt
     *
     * @param OutputFormat $format Das zu prüfende Format
     * @return bool True wenn unterstützt
     */
    public function supports(OutputFormat $format): bool;

    /**
     * Gibt das unterstützte Format zurück
     *
     * @return OutputFormat Das Format-Enum
     */
    public function getFormat(): OutputFormat;

    /**
     * Gibt eine Beschreibung des Formats zurück
     *
     * @return string Format-Beschreibung
     */
    public function getDescription(): string;
}
