<?php

declare(strict_types=1);

namespace App\Framework\Reflection\Contracts;

use App\Framework\Core\ValueObjects\ClassName;
use App\Framework\Core\ValueObjects\Statistics;

/**
 * Common interface for all reflection caches
 */
interface ReflectionCache
{
    public function forget(ClassName $className): void;

    public function flush(): void;

    public function getStats(): Statistics;

    public function has(ClassName $className, string $key): bool;

    public function getCacheKey(ClassName $className, string $suffix = ''): string;
}
