<?php

declare(strict_types=1);

namespace App\Framework\Discovery\Contracts;

use App\Framework\Discovery\Results\DiscoveryRegistry;
use App\Framework\Discovery\ValueObjects\DiscoveryContext;

/**
 * Contract for discovery processors that handle the actual file processing
 */
interface DiscoveryProcessor
{
    /**
     * Process files and return discovery results
     *
     * @param DiscoveryContext $context
     * @param array<DiscoveryPlugin> $plugins
     * @return DiscoveryRegistry
     */
    public function process(DiscoveryContext $context, array $plugins): DiscoveryRegistry;

    /**
     * Get processor health status
     */
    public function getHealthStatus(): array;
}
