"""Puertos del dominio para la carga individual."""

from __future__ import annotations

from typing import Protocol


class IndividualUploadInvalidationPort(Protocol):
    """Permite invalidar la cola sin acoplar el servicio de casos a MongoDB."""

    def invalidate_by_clinical_document_id(
        self,
        *,
        username: str,
        clinical_document_id: str,
        reason: str,
        document_id: str = "",
        case_key: str = "",
        deleted_by: str = "",
    ) -> int: ...

    def invalidate_by_case_key(
        self,
        *,
        username: str,
        case_key: str,
        reason: str,
        document_id: str = "",
        deleted_by: str = "",
    ) -> int: ...

    def invalidate_by_batch_file_id(
        self,
        *,
        username: str,
        batch_file_id: str,
        reason: str,
        deleted_by: str = "",
    ) -> int: ...
