<?php

declare(strict_types=1);

namespace App\Framework\SyntaxHighlighter\Formatters;

use App\Framework\Tokenizer\ValueObjects\Token;
use App\Framework\Tokenizer\ValueObjects\TokenCollection;

/**
 * Interface for formatters that work with the new tokenizer
 */
interface FormatterInterface
{
    /**
     * Format a collection of tokens
     */
    public function format(TokenCollection $tokens, array $options = []): string;

    /**
     * Format a single token
     */
    public function formatSingle(Token $token, array $options = []): string;

    /**
     * Get the name of this formatter
     */
    public function getName(): string;

    /**
     * Check if formatter supports a specific option
     */
    public function supportsOption(string $option): bool;
}
