test(simulator): use named import
[e-mobility-charging-stations-simulator.git] / src / types / ChargingStationWorker.ts
index 8bdc9af04047ac3df6787f8accbc4e61b2909ccb..d2881c0aa1f126fa955fc45f55c39d15fdffe8b3 100644 (file)
@@ -1,24 +1,56 @@
-import { WorkerData, WorkerMessage, WorkerMessageEvents } from './Worker';
+import type { WebSocket } from 'ws';
+
+import type {
+  BootNotificationResponse,
+  ChargingStationAutomaticTransactionGeneratorConfiguration,
+  ChargingStationInfo,
+  ConnectorStatus,
+  JsonObject,
+  Statistics,
+} from './internal';
+import { type WorkerData, type WorkerMessage, WorkerMessageEvents } from '../worker';
+
+interface ChargingStationWorkerOptions extends JsonObject {
+  elementStartDelay?: number;
+}
 
 export interface ChargingStationWorkerData extends WorkerData {
   index: number;
   templateFile: string;
+  chargingStationWorkerOptions?: ChargingStationWorkerOptions;
+}
+
+export interface ChargingStationData extends WorkerData {
+  stationInfo: ChargingStationInfo;
+  started: boolean;
+  wsState?:
+    | typeof WebSocket.CONNECTING
+    | typeof WebSocket.OPEN
+    | typeof WebSocket.CLOSING
+    | typeof WebSocket.CLOSED;
+  bootNotificationResponse?: BootNotificationResponse;
+  connectors: ConnectorStatus[];
+  automaticTransactionGenerator?: ChargingStationAutomaticTransactionGeneratorConfiguration;
 }
 
-enum InternalChargingStationWorkerMessageEvents {
+enum ChargingStationMessageEvents {
   STARTED = 'started',
   STOPPED = 'stopped',
-  PERFORMANCE_STATISTICS = 'performanceStatistics'
+  UPDATED = 'updated',
+  PERFORMANCE_STATISTICS = 'performanceStatistics',
 }
 
-export type ChargingStationWorkerMessageEvents = WorkerMessageEvents | InternalChargingStationWorkerMessageEvents;
-
 export const ChargingStationWorkerMessageEvents = {
   ...WorkerMessageEvents,
-  ...InternalChargingStationWorkerMessageEvents
-};
+  ...ChargingStationMessageEvents,
+} as const;
+export type ChargingStationWorkerMessageEvents = WorkerMessageEvents | ChargingStationMessageEvents;
 
+export type ChargingStationWorkerMessageData = ChargingStationData | Statistics;
 
-export interface ChargingStationWorkerMessage extends Omit<WorkerMessage<ChargingStationWorkerData>, 'id'> {
+export type ChargingStationWorkerMessage<T extends ChargingStationWorkerMessageData> = Omit<
+  WorkerMessage<T>,
+  'id'
+> & {
   id: ChargingStationWorkerMessageEvents;
-}
+};