from __future__ import annotations

from dataclasses import dataclass
from typing import Optional


@dataclass
class PresignRequest:
    """Request to generate a presigned upload URL."""

    filename: str
    content_type: str
    category: str


@dataclass
class PresignResponse:
    """Presigned upload URL response."""

    object_key: str
    upload_url: str
    headers: dict[str, str]


@dataclass
class SignRequest:
    """Request to generate a signed download URL."""

    object_key: str
    expires_in: Optional[int] = None


@dataclass
class SignResponse:
    """Signed download URL response."""

    url: str


@dataclass
class DeleteRequest:
    """Request to delete an object."""

    object_key: str


@dataclass
class DeleteResponse:
    """Delete operation response."""

    success: bool


@dataclass
class HealthResponse:
    """Service health status."""

    status: str
    storage: str
