import { ChannelCategory, DeviceCategory, PropertyCategory } from '../../../modules/devices/devices.constants'; import { SimulatorDeviceEntity } from '../entities/simulator.entity'; export interface PropertyChangeEvent { deviceId: string; channelCategory: ChannelCategory; propertyCategory: PropertyCategory; value: string | number | boolean; previousValue?: string | number | boolean; } export interface ScheduledPropertyUpdate { channelCategory: ChannelCategory; propertyCategory: PropertyCategory; targetValue: string | number | boolean; delayMs: number; durationMs: number; startValue?: number; } export interface DeviceBehaviorState { activeUpdates: ActivePropertyTransition[]; data: Map; } export interface ActivePropertyTransition { channelCategory: ChannelCategory; propertyCategory: PropertyCategory; targetValue: string | number | boolean; startValue?: number; startTime: number; delayMs: number; durationMs: number; } export interface BehaviorTickResult { channelCategory: ChannelCategory; propertyCategory: PropertyCategory; value: string | number | boolean; } export interface IDeviceBehavior { getType(): string; getSupportedCategory(): DeviceCategory; onPropertyChanged(device: SimulatorDeviceEntity, event: PropertyChangeEvent, state: DeviceBehaviorState): ScheduledPropertyUpdate[]; tick(device: SimulatorDeviceEntity, state: DeviceBehaviorState, now: number): BehaviorTickResult[]; } export declare abstract class BaseDeviceBehavior implements IDeviceBehavior { abstract getType(): string; abstract getSupportedCategory(): DeviceCategory; abstract onPropertyChanged(device: SimulatorDeviceEntity, event: PropertyChangeEvent, state: DeviceBehaviorState): ScheduledPropertyUpdate[]; tick(device: SimulatorDeviceEntity, state: DeviceBehaviorState, now: number): BehaviorTickResult[]; protected easeInOut(t: number): number; protected hasChannel(device: SimulatorDeviceEntity, category: ChannelCategory): boolean; protected getStateValue(state: DeviceBehaviorState, key: string, defaultValue: string | number | boolean): string | number | boolean; protected setStateValue(state: DeviceBehaviorState, key: string, value: string | number | boolean): void; protected cancelTransitions(state: DeviceBehaviorState, channelCategory: ChannelCategory, propertyCategory: PropertyCategory): void; protected getDevicePropertyValue(device: SimulatorDeviceEntity, channelCategory: ChannelCategory, propertyCategory: PropertyCategory, fallback: number): number; protected getOrInitStateFromDevice(state: DeviceBehaviorState, key: string, device: SimulatorDeviceEntity, channelCategory: ChannelCategory, propertyCategory: PropertyCategory, fallback: number): number; }