<?php

declare(strict_types=1);

namespace App\Framework\MachineLearning\Core;

/**
 * Atomic interface for feature extractor performance characteristics
 *
 * This interface is domain-agnostic and provides performance metadata
 * about feature extractors for optimization and scheduling.
 *
 * Composition Pattern:
 * - Combine with FeatureExtractorMetadata for complete metadata
 * - Combine with domain-specific extractor interfaces (WafFeatureExtractor, etc.)
 */
interface FeatureExtractorPerformance
{
    /**
     * Get expected processing time in milliseconds
     *
     * Used for timeout management and performance monitoring
     */
    public function getExpectedProcessingTime(): int;

    /**
     * Check if extractor supports parallel execution
     *
     * Extractors that maintain state or require sequential access
     * should return false
     */
    public function supportsParallelExecution(): bool;

    /**
     * Get dependencies on other extractors
     *
     * Returns array of fully qualified class names that must run
     * before this extractor
     *
     * @return string[] Array of fully qualified class names
     */
    public function getDependencies(): array;
}
