740d6e50a21a0e30f2138be7cbce8dd49fcf046c
[e-mobility-charging-stations-simulator.git] / src / types / ChargingStationWorker.ts
1 import type { WebSocket } from 'ws'
2
3 import type { ChargingStationAutomaticTransactionGeneratorConfiguration } from './AutomaticTransactionGenerator.js'
4 import { ChargingStationEvents } from './ChargingStationEvents.js'
5 import type { ChargingStationInfo } from './ChargingStationInfo.js'
6 import type { ChargingStationOcppConfiguration } from './ChargingStationOcppConfiguration.js'
7 import type { ConnectorStatus } from './ConnectorStatus.js'
8 import type { EvseStatus } from './Evse.js'
9 import type { JsonObject } from './JsonType.js'
10 import type { BootNotificationResponse } from './ocpp/Responses.js'
11 import type { Statistics } from './Statistics.js'
12 import { type WorkerData, type WorkerMessage, WorkerMessageEvents } from '../worker/index.js'
13
14 interface ChargingStationWorkerOptions extends JsonObject {
15 elementStartDelay?: number
16 }
17
18 export interface ChargingStationWorkerData extends WorkerData {
19 index: number
20 templateFile: string
21 chargingStationWorkerOptions?: ChargingStationWorkerOptions
22 }
23
24 export type EvseStatusWorkerType = Omit<EvseStatus, 'connectors'> & {
25 connectors?: ConnectorStatus[]
26 }
27
28 export interface ChargingStationData extends WorkerData {
29 started: boolean
30 stationInfo: ChargingStationInfo
31 connectors: ConnectorStatus[]
32 evses: EvseStatusWorkerType[]
33 ocppConfiguration: ChargingStationOcppConfiguration
34 wsState?:
35 | typeof WebSocket.CONNECTING
36 | typeof WebSocket.OPEN
37 | typeof WebSocket.CLOSING
38 | typeof WebSocket.CLOSED
39 bootNotificationResponse?: BootNotificationResponse
40 automaticTransactionGenerator?: ChargingStationAutomaticTransactionGeneratorConfiguration
41 }
42
43 enum ChargingStationMessageEvents {
44 performanceStatistics = 'performanceStatistics',
45 }
46
47 export const ChargingStationWorkerMessageEvents = {
48 ...WorkerMessageEvents,
49 ...ChargingStationEvents,
50 ...ChargingStationMessageEvents
51 } as const
52 // eslint-disable-next-line @typescript-eslint/no-redeclare
53 export type ChargingStationWorkerMessageEvents =
54 | WorkerMessageEvents
55 | ChargingStationEvents
56 | ChargingStationMessageEvents
57
58 export type ChargingStationWorkerMessageData = ChargingStationData | Statistics
59
60 export type ChargingStationWorkerMessage<T extends ChargingStationWorkerMessageData> = Omit<
61 WorkerMessage<T>,
62 'event'
63 > & {
64 event: ChargingStationWorkerMessageEvents
65 }