import type { Logging } from 'homebridge'; import type { CharacteristicConstructor } from '../interfaces/hap-types-interface.js'; import { SecurityState } from '../types/security-state-type.js'; import { OriginType } from '../types/origin-type.js'; import type { ServiceRegistry } from '../interfaces/service-registry-interface.js'; import type { SystemState } from '../interfaces/system-state-interface.js'; import type { SecuritySystemOptions } from '../interfaces/options-interface.js'; import type { EventBusService } from '../services/event-bus-service.js'; import type { StorageService } from '../services/storage-service.js'; import type { AudioService } from '../services/audio-service.js'; import type { SensorHandler } from './sensor-handler.js'; import type { TimerManager } from '../timers/timer-manager.js'; import type { ServiceResult } from '../types/service-result-type.js'; /** * Manages the core security-system state machine: arming, triggering, and resetting. * Cross-handler side effects are signalled via the event bus so that this class has * no direct dependencies on TripHandler or SwitchHandler. */ export declare class StateHandler { private readonly services; private readonly state; private readonly options; private readonly Characteristic; private readonly log; private readonly bus; private readonly storageService; private readonly audio; private readonly timers; private readonly sensorHandler; constructor(services: ServiceRegistry, state: SystemState, options: SecuritySystemOptions, Characteristic: CharacteristicConstructor, log: Logging, bus: EventBusService, storageService: StorageService, audio: AudioService, timers: TimerManager, sensorHandler: SensorHandler); setCurrentState(state: SecurityState, origin: OriginType): void; updateTargetState(state: SecurityState, origin: OriginType, delay: number): ServiceResult; getArmingSeconds(targetState: SecurityState): number; resetTimers(): void; /** Returns true while the trigger delay is counting down (trip switch is active). */ isTripping(): boolean; /** Checks whether arming is currently blocked by an arming-lock switch. */ isArmingLocked(targetState: SecurityState): boolean; getAvailableTargetStates(): SecurityState[]; logMode(type: string, state: SecurityState | string): void; /** * Returns a human-readable reason string if `state` is an invalid target, * or `null` if the transition is permitted. */ private getBadTargetStateReason; private handleTargetStateChange; private handleCurrentStateChange; private handleTriggeredState; private startTriggeredMotionSensor; private handleArmingState; private resetViaOffMode; }