<?php

declare(strict_types=1);

namespace App\Domain\Shared\Domain\Contract;

use App\Domain\Shared\Domain\Model\FileUpload;

interface FileUploadInterface
{
    /**
     * Déplace un fichier uploadé vers un répertoire temporaire
     */
    public function moveUploadedFile(string $sourcePath, string $targetDirectory, string $originalName): string;

    /**
     * Vérifie si un fichier existe
     */
    public function fileExists(string $filePath): bool;

    /**
     * Supprime un fichier
     */
    public function deleteFile(string $filePath): void;

    /**
     * Déplace un fichier d'un emplacement à un autre
     */
    public function moveFile(string $sourcePath, string $targetPath): void;

    /**
     * Crée un répertoire s'il n'existe pas
     */
    public function createDirectory(string $path): void;

    /**
     * Valide le format d'un fichier
     */
    public function validateFileFormat(string $filePath, array $allowedExtensions): bool;
}
