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