from pathlib import Path
from typing import AsyncIterable, Protocol


class StorageProtocol(Protocol):
    async def store_file(self, source_path: Path, dest_path: Path) -> str: ...

    async def get_file_stream(self, uri: str) -> AsyncIterable[bytes]: ...

    async def get_download_url(self, uri: str) -> str: ...

    async def delete_file(self, uri: str) -> bool: ...

    def get_temp_dir(self) -> Path: ...
