<?php

declare(strict_types=1);

namespace App\Framework\Mcp\Core\Interfaces;

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

/**
 * Interface für JSON Schema Validation in MCP Tools
 *
 * Bietet einheitliche Validation für alle MCP Tool Input-Parameter
 */
interface SchemaValidator
{
    /**
     * Validiert Daten gegen ein JSON Schema
     *
     * @param array $data Die zu validierenden Daten
     * @param array $schema Das JSON Schema
     * @return ValidationResult Validation-Ergebnis mit Fehlern
     */
    public function validate(array $data, array $schema): ValidationResult;

    /**
     * Validiert nur bestimmte Felder
     *
     * @param array $data Die zu validierenden Daten
     * @param array $schema Das JSON Schema
     * @param array $fields Liste der zu validierenden Felder
     * @return ValidationResult Validation-Ergebnis
     */
    public function validateFields(array $data, array $schema, array $fields): ValidationResult;

    /**
     * Prüft ob ein Schema gültig ist
     *
     * @param array $schema Das zu prüfende Schema
     * @return bool True wenn Schema gültig ist
     */
    public function isValidSchema(array $schema): bool;
}
