import { IntentType } from '../../intents/intents.constants'; import { ScenesService } from '../../scenes/services/scenes.service'; import { EvaluatorRulesLoaderService } from '../spec/evaluator-rules-loader.service'; import { ActionObserverService } from './action-observer.service'; import { BuddyContext } from './buddy-context.service'; import { EvaluatorResult, HeartbeatEvaluator } from './heartbeat.types'; export interface ActionSequence { intentTypes: IntentType[]; deviceIds: string[]; hash: string; } export interface SceneActionDetail { deviceId: string; channelId?: string; propertyId?: string; value?: unknown; } export interface DetectedSequencePattern { sequence: ActionSequence; spaceId: string; timeOfDay: { hour: number; minute: number; }; occurrences: number; latestActions: SceneActionDetail[]; } export declare class SceneSuggestionEvaluator implements HeartbeatEvaluator { private readonly actionObserver; private readonly scenesService; private readonly rulesLoader; readonly name = "SceneSuggestion"; private readonly logger; private static readonly CACHE_TTL_MS; private patternCache; private patternCacheTime; constructor(actionObserver: ActionObserverService, scenesService: ScenesService, rulesLoader: EvaluatorRulesLoaderService); evaluate(context: BuddyContext): Promise; private getPatternsCached; detectSequencePatterns(): DetectedSequencePattern[]; createSceneFromSuggestion(spaceId: string, metadata: Record): Promise<{ sceneId: string; } | { error: string; }>; private groupIntoSessions; private groupSessionsBySignature; private sessionToSequence; private clusterSessions; private patternToResult; private getTimePeriodLabel; }