from __future__ import annotations

from typing import Protocol

from packages.domain import GeneratedVideo


class GeneratedVideoRepository(Protocol):
    def create(self, video: GeneratedVideo) -> GeneratedVideo: ...

    def get(self, video_id: str) -> GeneratedVideo | None: ...

    def list_by_project(self, project_id: str) -> list[GeneratedVideo]: ...

    def list_by_generation_task(self, generation_task_id: str) -> list[GeneratedVideo]: ...

    def list_by_batch(self, batch_id: str) -> list[GeneratedVideo]: ...
