<?php

declare(strict_types=1);

namespace App\Framework\Discovery;

use App\Framework\Core\ValueObjects\ClassName;
use App\Framework\Filesystem\ValueObjects\FilePath;
use App\Framework\Reflection\WrappedReflectionClass;

/**
 * Interface for visitors that need access to cached reflection data
 * This optimizes performance by avoiding duplicate reflection creation
 */
interface ReflectionAwareVisitor
{
    /**
     * Wird für jede gefundene Klasse mit bereits erstellter Reflection aufgerufen
     * Uses the framework's cached reflection system for optimal performance
     */
    public function visitClassWithReflection(ClassName $className, FilePath $filePath, WrappedReflectionClass $reflection): void;
}
