<?php

namespace Modules\Bms\Services\Contracts;

/**
 * Media boundary for hall photo/video galleries. Delegates to whatever
 * storage strategy the ERP provides (SmartStorage / S3 / local). Video is
 * never served from the app server — large media gets a CDN/object-store URL.
 */
interface MediaServiceContract
{
    /**
     * Store an uploaded file (or a path) under a directory.
     *
     * @param  \Illuminate\Http\UploadedFile|string  $file
     * @param  array  $options  disk, visibility, filename
     * @return array  ['disk' => ..., 'path' => ..., 'url' => ...]
     */
    public function store(int $businessId, string $directory, $file, array $options = []): array;

    /** Public URL for a stored file. */
    public function url(?string $disk, ?string $path, ?string $fallbackUrl = null): ?string;

    /** Delete a stored file. */
    public function delete(?string $disk, ?string $path): bool;
}
