import { OnModuleDestroy, OnModuleInit } from '@nestjs/common'; import { ConfigService } from '../../../modules/config/services/config.service'; import { ConnectionState, DeviceCategory } from '../../../modules/devices/devices.constants'; import { ChannelsPropertiesService } from '../../../modules/devices/services/channels.properties.service'; import { DeviceConnectivityService } from '../../../modules/devices/services/device-connectivity.service'; import { DevicesService } from '../../../modules/devices/services/devices.service'; import { ConfigChangeResult, IManagedPluginService, ServiceState } from '../../../modules/extensions/services/managed-plugin-service.interface'; import { SimulatorDeviceEntity } from '../entities/simulator.entity'; import { SimulationContext } from '../simulators'; export interface SimulationServiceConfig { updateOnStart: boolean; simulationInterval: number; latitude: number; smoothTransitions: boolean; connectionStateOnStart?: ConnectionState; } export declare class SimulationService implements OnModuleInit, OnModuleDestroy, IManagedPluginService { private readonly configService; private readonly devicesService; private readonly deviceConnectivityService; private readonly channelsPropertiesService; private readonly logger; readonly pluginName = "simulator-plugin"; readonly serviceId = "simulation"; private config; private simulators; private previousValues; private simulationTimer; private isRunning; private state; private startStopLock; constructor(configService: ConfigService, devicesService: DevicesService, deviceConnectivityService: DeviceConnectivityService, channelsPropertiesService: ChannelsPropertiesService); private registerSimulators; onModuleInit(): void; start(): Promise; stop(): Promise; getState(): ServiceState; onConfigChanged(): Promise; configure(config: Partial): void; getConfig(): SimulationServiceConfig; startAutoSimulation(): void; stopAutoSimulation(): void; isAutoSimulationRunning(): boolean; private loadPluginConfig; onModuleDestroy(): void; simulateAllDevices(): Promise<{ devicesSimulated: number; propertiesUpdated: number; }>; simulateDevice(device: SimulatorDeviceEntity, context?: SimulationContext): Promise<{ success: boolean; propertiesUpdated: number; }>; private simulateGenericDevice; private generateGenericValue; private applySimulatedValue; private loadCurrentValues; clearPreviousValues(): void; getSupportedCategories(): DeviceCategory[]; hasSimulator(category: DeviceCategory): boolean; private withLock; private applyInitialConnectionState; private toError; private isValidConnectionState; }