<?php

namespace Kylin\Storage\Contracts;

interface StorageAdapterInterface
{
    public function upload(string $localPath, string $remotePath, array $options = []): string;
    public function download(string $remotePath, ?string $localPath = null): string;
    public function delete(string $remotePath): bool;
    public function getUrl(string $remotePath): string;
    public function getSignedUrl(string $remotePath, int $expires = 3600): string;
    public function exists(string $remotePath): bool;
    public function getSize(string $remotePath): int;
    public function getMimeType(string $remotePath): string;
}
