<?php

declare(strict_types=1);

namespace App\Framework\Cache;

interface CompressionAlgorithm
{
    /**
     * Komprimiert einen Wert. Rückgabe kann String oder Binärdaten sein.
     * Gibt bei $forceCompression ein Flag an, ob immer komprimiert werden soll.
     */
    public function compress(string $value, bool $forceCompression = false): string;

    /**
     * Dekodiert einen Wert, falls komprimiert; ansonsten unverändert zurückgeben.
     */
    public function decompress(string $value): string;

    /**
     * Gibt true zurück, falls $value komprimiert ist (z.B. am Prefix erkennbar)
     */
    public function isCompressed(string $value): bool;
}
