Improve payload type checking in OCPP, UI and Broadcast Channel
[e-mobility-charging-stations-simulator.git] / src / types / ChargingStationWorker.ts
1 import ChargingStationInfo from './ChargingStationInfo';
2 import { ConnectorStatus } from './ConnectorStatus';
3 import { JsonObject } from './JsonType';
4 import Statistics from './Statistics';
5 import { WorkerData, WorkerMessage, WorkerMessageEvents } from './Worker';
6
7 export interface ChargingStationWorkerOptions extends JsonObject {
8 elementStartDelay?: number;
9 }
10
11 export interface ChargingStationWorkerData extends WorkerData {
12 index: number;
13 templateFile: string;
14 chargingStationWorkerOptions?: ChargingStationWorkerOptions;
15 }
16
17 export interface ChargingStationData extends WorkerData {
18 hashId: string;
19 stationInfo: ChargingStationInfo;
20 stopped: boolean;
21 connectors: ConnectorStatus[];
22 }
23
24 enum ChargingStationMessageEvents {
25 STARTED = 'started',
26 STOPPED = 'stopped',
27 UPDATED = 'updated',
28 PERFORMANCE_STATISTICS = 'performanceStatistics',
29 }
30
31 export type ChargingStationWorkerMessageEvents = WorkerMessageEvents | ChargingStationMessageEvents;
32
33 export const ChargingStationWorkerMessageEvents = {
34 ...WorkerMessageEvents,
35 ...ChargingStationMessageEvents,
36 };
37
38 export type ChargingStationWorkerMessageData = ChargingStationData | Statistics;
39
40 export interface ChargingStationWorkerMessage<T extends WorkerData>
41 extends Omit<WorkerMessage<T>, 'id'> {
42 id: ChargingStationWorkerMessageEvents;
43 }