"""
Data source types for Sideline.

This module defines the data structures used by data sources.
"""

from dataclasses import dataclass
from typing import Any, Optional


@dataclass
class SourceItem:
    """A single item from a data source."""

    content: str
    source: str
    timestamp: str
    metadata: Optional[dict[str, Any]] = None


@dataclass
class ImageItem:
    """An image item from a data source - wraps a PIL Image."""

    image: Any  # PIL Image
    source: str
    timestamp: str
    path: Optional[str] = None  # File path or URL if applicable
    metadata: Optional[dict[str, Any]] = None


__all__ = ["SourceItem", "ImageItem"]
