from typing import Optional
import numpy as np

from models.core import ValidationResult
from models.images import ImageBatch


class BatchValidator:
    @staticmethod
    def validate_batch(batch: ImageBatch) -> ValidationResult:
        raise NotImplementedError

    @staticmethod
    def validate_image_format(image_bytes: bytes) -> ValidationResult:
        raise NotImplementedError

    @staticmethod
    def validate_sequence_continuity(
        current_batch: ImageBatch,
        expected_start: int,
    ) -> ValidationResult:
        raise NotImplementedError

    @staticmethod
    def validate_image_dimensions(
        image: np.ndarray,
        expected_width: int,
        expected_height: int,
    ) -> ValidationResult:
        raise NotImplementedError

    @staticmethod
    def validate_batch_size(
        batch: ImageBatch,
        max_size: int = 100,
    ) -> ValidationResult:
        raise NotImplementedError

