export interface YamlEnumValueMeta { label: string; description?: string; icon?: string; step?: number; } export interface YamlEnumsConfig { lighting_roles: Record; lighting_modes: Record; brightness_deltas: Record; climate_roles: Record; climate_modes: Record; setpoint_deltas: Record; } export interface YamlIntentParam { name: string; type: 'enum' | 'boolean' | 'number' | 'string'; required: boolean; description: string; enum_ref?: string; exclude_values?: string[]; min?: number; max?: number; min_ref?: string; max_ref?: string; } export interface YamlIntentDefinition { type: string; label: string; description: string; icon: string; params: YamlIntentParam[]; } export interface YamlCategoryMeta { id: string; label: string; description: string; icon: string; } export interface YamlLimitsConfig { absolute_min_setpoint?: number; absolute_max_setpoint?: number; } export interface YamlIntentConfig { category: YamlCategoryMeta; limits?: YamlLimitsConfig; intents: YamlIntentDefinition[]; } export interface YamlRoleBrightnessRule { on: boolean; brightness?: number; color?: string; } export interface YamlModeFallback { roles: string[]; brightness: number; } export interface YamlModeOrchestration { label: string; description: string; icon: string; mvp_brightness?: number; roles: Record; fallback?: YamlModeFallback; } export interface YamlLightingModesConfig { modes: Record; } export interface YamlRolePositionRule { position: number; tilt?: number; } export interface YamlCoversModeOrchestration { label: string; description: string; icon: string; mvp_position?: number; roles: Record; } export interface YamlCoversModesConfig { modes: Record; } export interface YamlSuggestionRule { id: string; title: string; reason: string | null; hour_from: number | null; hour_to: number | null; lights_on: boolean | null; min_brightness: number | null; space_is_bedroom: boolean | null; intent_type: string; intent_mode: string | null; } export interface YamlSuggestionsConfig { bedroom_patterns: string[]; rules: YamlSuggestionRule[]; } export interface ResolvedEnumValue { value: string; label: string; description?: string; icon?: string; } export interface ResolvedIntentParam { name: string; type: 'enum' | 'boolean' | 'number' | 'string'; required: boolean; description: string; enumValues?: ResolvedEnumValue[]; minValue?: number; maxValue?: number; } export interface ResolvedIntent { type: string; label: string; description: string; icon: string; params: ResolvedIntentParam[]; } export interface ResolvedIntentCategory { category: string; label: string; description: string; icon: string; intents: ResolvedIntent[]; } export interface ResolvedRoleBrightnessRule { brightness: number | null; on: boolean; color?: string; } export interface ResolvedModeOrchestration { label: string; description: string; icon: string; mvpBrightness: number; roles: Record; fallbackRoles?: string[]; fallbackBrightness?: number; } export interface ResolvedRolePositionRule { position: number; tilt?: number; } export interface ResolvedCoversModeOrchestration { label: string; description: string; icon: string; mvpPosition: number; roles: Record; } export interface ResolvedSuggestionRule { id: string; title: string; reason: string | null; hourFrom: number | null; hourTo: number | null; lightsOn: boolean | null; minBrightness: number | null; spaceIsBedroom: boolean | null; intentType: string; intentMode: string | null; } export type SpecSource = 'builtin' | 'user'; export interface SpecLoadResult { success: boolean; source: string; specSource: SpecSource; errors?: string[]; warnings?: string[]; }