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]: ... def list_paginated( self, *, project_id: str | None = None, status: str | None = None, review_status: str | None = None, page: int = 1, page_size: int = 20, ) -> tuple[list[GeneratedVideo], int]: ... def update_review_status(self, video_id: str, review_status: str) -> GeneratedVideo | None: ... def update_thumbnail(self, video_id: str, thumbnail_url: str) -> bool: ... def get_by_ids(self, video_ids: list[str]) -> list[GeneratedVideo]: ...