<?php

declare(strict_types=1);

namespace App\Framework\Filesystem;

/**
 * Interface für Compression-Storage-Operationen
 *
 * Ermöglicht automatische Komprimierung für große Dateien.
 * Ideal für Analytics-Daten, Logs und Archive.
 */
interface CompressibleStorage
{
    /**
     * Schreibt Daten komprimiert
     */
    public function putCompressed(string $path, string $content, string $algorithm = 'gzip'): void;

    /**
     * Liest komprimierte Daten
     */
    public function getCompressed(string $path): string;

    /**
     * Komprimiert bestehende Datei
     */
    public function compress(string $path, string $algorithm = 'gzip'): void;

    /**
     * Dekomprimiert Datei
     */
    public function decompress(string $path): void;

    /**
     * Prüft ob Datei komprimiert ist
     */
    public function isCompressed(string $path): bool;

    /**
     * Gibt verfügbare Komprimierungs-Algorithmen zurück
     *
     * @return array<string>
     */
    public function getAvailableAlgorithms(): array;
}
