refactor: factor out performance records JSON file path building
[e-mobility-charging-stations-simulator.git] / src / types / ChargingStationWorker.ts
index 1a48e96da8dc3557ce4be95d600a591ea00b8eb4..3164414ae59a5b558a8a70693f8dc3f879510a02 100644 (file)
@@ -1,9 +1,18 @@
-import ChargingStationInfo from './ChargingStationInfo';
-import { ConnectorStatus } from './ConnectorStatus';
-import { JsonObject } from './JsonType';
-import { WorkerData, WorkerMessage, WorkerMessageEvents } from './Worker';
+import type { WebSocket } from 'ws';
 
-export interface ChargingStationWorkerOptions extends JsonObject {
+import type {
+  BootNotificationResponse,
+  ChargingStationAutomaticTransactionGeneratorConfiguration,
+  ChargingStationInfo,
+  ChargingStationOcppConfiguration,
+  ConnectorStatus,
+  EvseStatus,
+  JsonObject,
+  Statistics,
+} from './internal';
+import { type WorkerData, type WorkerMessage, WorkerMessageEvents } from '../worker';
+
+interface ChargingStationWorkerOptions extends JsonObject {
   elementStartDelay?: number;
 }
 
@@ -13,28 +22,43 @@ export interface ChargingStationWorkerData extends WorkerData {
   chargingStationWorkerOptions?: ChargingStationWorkerOptions;
 }
 
+type EvseStatusType = Omit<EvseStatus, 'connectors'> & {
+  connectors?: ConnectorStatus[];
+};
+
 export interface ChargingStationData extends WorkerData {
-  hashId: string;
+  started: boolean;
   stationInfo: ChargingStationInfo;
-  stopped: boolean;
   connectors: ConnectorStatus[];
+  evses: EvseStatusType[];
+  ocppConfiguration: ChargingStationOcppConfiguration;
+  wsState?:
+    | typeof WebSocket.CONNECTING
+    | typeof WebSocket.OPEN
+    | typeof WebSocket.CLOSING
+    | typeof WebSocket.CLOSED;
+  bootNotificationResponse?: BootNotificationResponse;
+  automaticTransactionGenerator?: ChargingStationAutomaticTransactionGeneratorConfiguration;
 }
 
 enum ChargingStationMessageEvents {
-  STARTED = 'started',
-  STOPPED = 'stopped',
-  UPDATED = 'updated',
-  PERFORMANCE_STATISTICS = 'performanceStatistics',
+  started = 'started',
+  stopped = 'stopped',
+  updated = 'updated',
+  performanceStatistics = 'performanceStatistics',
 }
 
-export type ChargingStationWorkerMessageEvents = WorkerMessageEvents | ChargingStationMessageEvents;
-
 export const ChargingStationWorkerMessageEvents = {
   ...WorkerMessageEvents,
   ...ChargingStationMessageEvents,
-};
+} as const;
+export type ChargingStationWorkerMessageEvents = WorkerMessageEvents | ChargingStationMessageEvents;
+
+export type ChargingStationWorkerMessageData = ChargingStationData | Statistics;
 
-export interface ChargingStationWorkerMessage<T extends WorkerData>
-  extends Omit<WorkerMessage<T>, 'id'> {
+export type ChargingStationWorkerMessage<T extends ChargingStationWorkerMessageData> = Omit<
+  WorkerMessage<T>,
+  'id'
+> & {
   id: ChargingStationWorkerMessageEvents;
-}
+};