package ports

// StreamingService defines the interface for CometD-style streaming operations.
// This allows handlers to depend on an abstraction rather than the concrete SessionManager.
type StreamingService interface {
	// Session Management
	CreateSession() string
	ValidateSession(clientID string) bool
	DestroySession(clientID string)

	// Subscription Management
	Subscribe(clientID, channel string) bool
	Unsubscribe(clientID, channel string) bool
	GetSubscribedChannels(clientID string) []string

	// Message Broadcasting
	Broadcast(channel string, data interface{})

	// Lifecycle
	SessionCount() int
	Stop()
}

// StreamingSession represents a client session for streaming operations
// This is a read-only representation for port consumers
type StreamingSession struct {
	ID       string
	Channels []string
	IsActive bool
}
