"""Unified topic constants for the MCFO platform.

All services MUST import and use these constants. Hardcoded topic strings are
a contract violation.
"""

# Waterfall topics -- main data pipeline.
# goconnector -> findata -> finledger -> fininsight -> finedge
TOPIC_DATA_STAGED = "data-staged"
TOPIC_DATA_PROMOTED = "data-promoted"
TOPIC_POSTING_COMPLETED = "posting-completed"
TOPIC_INSIGHT_PUBLISHED = "insight-published"

# Side-channel topics -- request/response pairs.
TOPIC_FINAI_INPUT = "finai-input"
TOPIC_FINAI_OUTPUT = "finai-output"
TOPIC_GOALS_INPUT = "goals-input"
TOPIC_GOALS_OUTPUT = "goals-output"
TOPIC_FXRATE_INPUT = "fxrate-input"
TOPIC_FXRATE_OUTPUT = "fxrate-output"

# Broadcast topics -- domain lifecycle events (CloudEvents-style, protobuf envelope).
TOPIC_GOAL_LIFECYCLE = "goal-lifecycle"

# Infrastructure topics.
TOPIC_ERRORS_DLQ = "errors-dlq"
