package ports import ( "context" "galaxy/notificationintent" ) //go:generate go run go.uber.org/mock/mockgen -destination=../adapters/mocks/mock_intentpublisher.go -package=mocks galaxy/lobby/internal/ports IntentPublisher // IntentPublisher is the lobby-facing producer port for normalized // notification intents. The production adapter is a // *notificationintent.Publisher which already satisfies this interface; // service tests use a generated gomock that records every Publish call. // // A failed Publish call is a notification degradation per // lobby/README.md §Notification Contracts and must not roll back already // committed business state. Callers log the error and proceed. type IntentPublisher interface { // Publish normalizes intent and appends it to the configured Redis // Stream, returning the stream entry id on success. Validation // failures and transport errors are returned verbatim. Publish(ctx context.Context, intent notificationintent.Intent) (string, error) }