package registry

import "time"

// AppDefinitionView is the app catalog shape expected by the web app client.
type AppDefinitionView struct {
	ID          string
	Slug        string
	Name        string
	Description string
	AvatarURL   string
	Kind        string
	// Visibility is global registry metadata. CatalogVisibility is the
	// workspace-local audience for an attributed external App; callers must not
	// conflate the two authorities.
	Visibility         string
	CatalogVisibility  string
	LatestVersion      string
	LatestScopes       []string
	LatestConfigSchema string
	RuntimeCapability  *AppRuntimeCapabilityView
	CreatedAt          time.Time
	UpdatedAt          time.Time
}

// AppRuntimeCapabilityView is the browser-facing normalized App capability from
// the latest immutable manifest snapshot.
type AppRuntimeCapabilityView struct {
	Supported        bool
	Transports       []string
	DefaultTransport string
	Events           []string
	Scopes           []string
	Notifications    *AppNotificationCapabilityView
	ConfigSchema     string
}

type AppNotificationCapabilityView struct {
	Targets []string
	Content []string
}
