<?php

declare(strict_types=1);

namespace App\Framework\Console;

/**
 * Interface für ConsoleOutput-Klassen.
 */

interface ConsoleOutputInterface
{
    /**
     * Schreibt Text in die Konsole
     */
    public function write(string $message, null|ConsoleColor|ConsoleStyle $style = null): void;

    /**
     * Schreibt Text mit Zeilenumbruch in die Konsole
     */
    public function writeLine(string $message = '', ?ConsoleColor $color = null): void;

    /**
     * Schreibt eine Erfolgsmeldung
     */
    public function writeSuccess(string $message): void;

    /**
     * Schreibt eine Fehlermeldung
     */
    public function writeError(string $message): void;

    /**
     * Schreibt eine Warnmeldung
     */
    public function writeWarning(string $message): void;

    /**
     * Schreibt eine Informationsmeldung
     */
    public function writeInfo(string $message): void;

    /**
     * Fügt leere Zeilen hinzu
     */
    public function newLine(int $count = 1): void;

    /**
     * Stellt eine Frage und wartet auf Benutzereingabe
     */
    public function askQuestion(string $question, ?string $default = null): string;

    /**
     * Fragt nach einer Bestätigung (ja/nein)
     */
    public function confirm(string $question, bool $default = false): bool;

    /**
     * Setzt den Fenstertitel des Terminals
     */
    public function writeWindowTitle(string $title, int $mode = 0): void;
}
