cd3f0ebd0ffcab7335b3c835adbb7249d130c28d
[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 export interface ChargingStationOptions extends JsonObject {
15 autoStart?: boolean
16 autoRegister?: boolean
17 persistentConfiguration?: boolean
18 }
19
20 export interface ChargingStationWorkerData extends WorkerData {
21 index: number
22 templateFile: string
23 options?: ChargingStationOptions
24 }
25
26 export type EvseStatusWorkerType = Omit<EvseStatus, 'connectors'> & {
27 connectors?: ConnectorStatus[]
28 }
29
30 export interface ChargingStationData extends WorkerData {
31 started: boolean
32 stationInfo: ChargingStationInfo
33 connectors: ConnectorStatus[]
34 evses: EvseStatusWorkerType[]
35 ocppConfiguration: ChargingStationOcppConfiguration
36 supervisionUrl: string
37 wsState?:
38 | typeof WebSocket.CONNECTING
39 | typeof WebSocket.OPEN
40 | typeof WebSocket.CLOSING
41 | typeof WebSocket.CLOSED
42 bootNotificationResponse?: BootNotificationResponse
43 automaticTransactionGenerator?: ChargingStationAutomaticTransactionGeneratorConfiguration
44 }
45
46 enum ChargingStationMessageEvents {
47 performanceStatistics = 'performanceStatistics'
48 }
49
50 export const ChargingStationWorkerMessageEvents = {
51 ...WorkerMessageEvents,
52 ...ChargingStationEvents,
53 ...ChargingStationMessageEvents
54 } as const
55 // eslint-disable-next-line @typescript-eslint/no-redeclare
56 export type ChargingStationWorkerMessageEvents =
57 | WorkerMessageEvents
58 | ChargingStationEvents
59 | ChargingStationMessageEvents
60
61 export interface ChargingStationWorkerEventError extends WorkerData {
62 event: WorkerMessageEvents
63 name: string
64 message: string
65 stack?: string
66 }
67
68 export type ChargingStationWorkerMessageData =
69 | ChargingStationData
70 | Statistics
71 | ChargingStationWorkerEventError
72
73 export type ChargingStationWorkerMessage<T extends ChargingStationWorkerMessageData> = Omit<
74 WorkerMessage<T>,
75 'event'
76 > & {
77 event: ChargingStationWorkerMessageEvents
78 }