from __future__ import annotations from pathlib import Path from typing import Protocol class StorageAdapter(Protocol): async def check(self) -> dict[str, str]: ... async def put_file(self, source_path: str, storage_key: str) -> dict[str, str | None]: ... async def download_file(self, storage_key: str, destination_path: Path) -> Path: ... async def object_exists(self, storage_key: str) -> bool: ...