"""
Base class for matching strategies.
"""

from abc import ABC, abstractmethod
from ..models import TokenLike, Match
from ..token_index import TokenIndex


class BaseMatchStrategy(ABC):
    """Base class for all matching strategies."""

    def __init__(self, context_radius: float = 200.0):
        """
        Initialize the strategy.

        Args:
            context_radius: Distance to search for context keywords
        """
        self.context_radius = context_radius

    @abstractmethod
    def find_matches(
        self,
        tokens: list[TokenLike],
        value: str,
        field_name: str,
        token_index: TokenIndex | None = None
    ) -> list[Match]:
        """
        Find matches for the given value.

        Args:
            tokens: List of tokens to search
            value: Value to find
            field_name: Name of the field
            token_index: Optional spatial index for efficient lookup

        Returns:
            List of Match objects
        """
        pass
