<?php

declare(strict_types=1);

namespace App\Framework\Database\TypeCaster;

interface TypeCasterInterface
{
    /**
     * Konvertiert einen Datenbank-Wert zu einem Value Object
     */
    public function fromDatabase(mixed $value, array $options = []): mixed;

    /**
     * Konvertiert ein Value Object zu einem Datenbank-Wert
     */
    public function toDatabase(mixed $value, array $options = []): mixed;

    /**
     * Prüft ob der Caster für den gegebenen Typ zuständig ist
     */
    public function supports(string $type): bool;
}
