"""Event-driven architecture with Kafka, SQS, NATS, and Memory support."""

from libs.schemas.events import (
    EVENT_SCHEMA_MAP,
    BaseEventData,
    CalculationReadyEventData,
    DocumentExtractedEventData,
    DocumentIngestedEventData,
    DocumentOCRReadyEventData,
    FirmSyncCompletedEventData,
    FormFilledEventData,
    HMRCSubmittedEventData,
    KGUpsertedEventData,
    KGUpsertReadyEventData,
    RAGIndexedEventData,
    ReviewCompletedEventData,
    ReviewRequestedEventData,
    get_schema_for_topic,
    validate_event_data,
)

from .base import EventBus, EventPayload
from .factory import create_event_bus
from .memory_bus import MemoryEventBus
from .nats_bus import NATSEventBus
from .topics import EventTopics

__all__ = [
    "EventPayload",
    "EventBus",
    "MemoryEventBus",
    "NATSEventBus",
    "create_event_bus",
    "EventTopics",
    # Event schemas
    "BaseEventData",
    "DocumentIngestedEventData",
    "DocumentOCRReadyEventData",
    "DocumentExtractedEventData",
    "KGUpsertReadyEventData",
    "KGUpsertedEventData",
    "RAGIndexedEventData",
    "CalculationReadyEventData",
    "FormFilledEventData",
    "HMRCSubmittedEventData",
    "ReviewRequestedEventData",
    "ReviewCompletedEventData",
    "FirmSyncCompletedEventData",
    "EVENT_SCHEMA_MAP",
    "validate_event_data",
    "get_schema_for_topic",
]
