<?php

namespace Modules\Media\Repositories\Interfaces;

use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\UploadedFile;
use Modules\Media\Models\Media;

interface MediaRepositoryInterface
{
    public function all(): Collection;
    public function find(int $id): ?Media;
    public function delete(int $id): bool;
    public function getByMediable(string $mediableType, int $mediableId): Collection;
    public function upload(UploadedFile $file, string $type, Model $mediable): Media;
    public function uploadWithoutMediable(UploadedFile $file, string $type): Media;
    public function count(): int;
}
