d0cdf900dd2a836ed76dd827c035e795714757e2
[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 }
17
18 export interface ChargingStationWorkerData extends WorkerData {
19 index: number
20 templateFile: string
21 options?: ChargingStationOptions
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 supervisionUrl: string
35 wsState?:
36 | typeof WebSocket.CONNECTING
37 | typeof WebSocket.OPEN
38 | typeof WebSocket.CLOSING
39 | typeof WebSocket.CLOSED
40 bootNotificationResponse?: BootNotificationResponse
41 automaticTransactionGenerator?: ChargingStationAutomaticTransactionGeneratorConfiguration
42 }
43
44 enum ChargingStationMessageEvents {
45 performanceStatistics = 'performanceStatistics'
46 }
47
48 export const ChargingStationWorkerMessageEvents = {
49 ...WorkerMessageEvents,
50 ...ChargingStationEvents,
51 ...ChargingStationMessageEvents
52 } as const
53 // eslint-disable-next-line @typescript-eslint/no-redeclare
54 export type ChargingStationWorkerMessageEvents =
55 | WorkerMessageEvents
56 | ChargingStationEvents
57 | ChargingStationMessageEvents
58
59 export interface ChargingStationWorkerEventError extends WorkerData {
60 event: WorkerMessageEvents
61 name: string
62 message: string
63 stack?: string
64 }
65
66 export type ChargingStationWorkerMessageData =
67 | ChargingStationData
68 | Statistics
69 | ChargingStationWorkerEventError
70
71 export type ChargingStationWorkerMessage<T extends ChargingStationWorkerMessageData> = Omit<
72 WorkerMessage<T>,
73 'event'
74 > & {
75 event: ChargingStationWorkerMessageEvents
76 }