"""
Abstract base classes for the vision backend.

The pipeline is now a single binary classifier: photography vs other.
Feature extraction is an internal detail of the classifier and is not
exposed as a separate service.
"""
from abc import ABC, abstractmethod
from dataclasses import dataclass

import numpy as np


@dataclass
class ClassificationResult:
    label: str
    confidence: float


class ContentClassifier(ABC):
    """Classifies an image into 'photography' or 'other'."""

    @abstractmethod
    def classify(self, image: np.ndarray) -> ClassificationResult:
        ...
