package port // StreamEvent represents an event to be published on a stream. type StreamEvent struct { ID string // Event ID for Last-Event-ID support Type string Data map[string]any } // StreamPublisher defines operations for managing SSE event streams. type StreamPublisher interface { // Subscribe creates a subscription to events for the given stream ID. // Returns a channel that will receive events and a cleanup function. Subscribe(streamID string) (<-chan StreamEvent, func()) // SubscribeFromID creates a subscription starting from a specific event ID. // This is used for reconnection with Last-Event-ID support. // Events since lastEventID will be replayed before new events are delivered. SubscribeFromID(streamID string, lastEventID string) (<-chan StreamEvent, func()) // Publish sends an event to all subscribers of a stream. // Returns the generated event ID. Publish(streamID string, event StreamEvent) string // Close closes a stream and all its subscriptions. Close(streamID string) }