<?php

namespace App\Framework\Console;

interface ConsoleInputInterface
{
    /**
     * Gibt ein Argument an der angegebenen Position zurück
     */
    public function getArgument(int $index, ?string $default = null): ?string;

    /**
     * Gibt alle Argumente zurück
     */
    public function getArguments(): array;

    /**
     * Gibt eine Option zurück
     */
    public function getOption(string $name, mixed $default = null): mixed;

    /**
     * Prüft, ob eine Option vorhanden ist
     */
    public function hasOption(string $name): bool;

    /**
     * Gibt alle Optionen zurück
     */
    public function getOptions(): array;

    /**
     * Fragt nach einer Benutzereingabe
     */
    public function ask(string $question, string $default = ''): string;

    /**
     * Fragt nach einem Passwort (versteckte Eingabe)
     */
    public function askPassword(string $question): string;

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

    /**
     * Zeigt ein einfaches Auswahlmenü
     */
    public function choice(string $question, array $choices, mixed $default = null): mixed;

    /**
     * Zeigt ein interaktives Menü mit Pfeiltasten-Navigation
     */
    public function menu(string $title, array $items): mixed;

    /**
     * Ermöglicht die Mehrfachauswahl aus einer Liste von Optionen
     */
    public function multiSelect(string $question, array $options): array;
}
