@zetra/citrineos-configuration 1.8.3-fork.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ export { ConfigurationDataApi } from './module/DataApi.js';
2
+ export { ConfigurationOcpp201Api } from './module/2.0.1/MessageApi.js';
3
+ export { ConfigurationOcpp16Api } from './module/1.6/MessageApi.js';
4
+ export type { IConfigurationModuleApi } from './module/interface.js';
5
+ export { ConfigurationModule } from './module/module.js';
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ // SPDX-FileCopyrightText: 2025 Contributors to the CitrineOS Project
2
+ //
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ export { ConfigurationDataApi } from './module/DataApi.js';
5
+ export { ConfigurationOcpp201Api } from './module/2.0.1/MessageApi.js';
6
+ export { ConfigurationOcpp16Api } from './module/1.6/MessageApi.js';
7
+ export { ConfigurationModule } from './module/module.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,EAAE;AACF,sCAAsC;AAEtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { FastifyInstance } from 'fastify';
2
+ import type { ILogObj } from 'tslog';
3
+ import { Logger } from 'tslog';
4
+ import type { IConfigurationModuleApi } from '../interface.js';
5
+ import { ConfigurationModule } from '../module.js';
6
+ import type { CallAction, IMessageConfirmation } from '@citrineos/base';
7
+ import { AbstractModuleApi, OCPP1_6 } from '@citrineos/base';
8
+ /**
9
+ * Server API for the Configuration component.
10
+ */
11
+ export declare class ConfigurationOcpp16Api extends AbstractModuleApi<ConfigurationModule> implements IConfigurationModuleApi {
12
+ /**
13
+ * Constructor for the class.
14
+ *
15
+ * @param {ConfigurationModule} ConfigurationComponent - The Configuration component.
16
+ * @param {FastifyInstance} server - The server instance.
17
+ * @param {Logger<ILogObj>} [logger] - Optional logger instance.
18
+ */
19
+ constructor(ConfigurationComponent: ConfigurationModule, server: FastifyInstance, logger?: Logger<ILogObj>);
20
+ triggerMessage(identifier: string[], request: OCPP1_6.TriggerMessageRequest, callbackUrl?: string, tenantId?: number): Promise<IMessageConfirmation[]>;
21
+ changeConfiguration(identifier: string[], request: OCPP1_6.ChangeConfigurationRequest, callbackUrl?: string, tenantId?: number): Promise<IMessageConfirmation[]>;
22
+ getConfiguration(identifier: string[], request: OCPP1_6.GetConfigurationRequest, callbackUrl?: string, tenantId?: number): Promise<IMessageConfirmation[]>;
23
+ reset(identifier: string[], request: OCPP1_6.ResetRequest, callbackUrl?: string, tenantId?: number): Promise<IMessageConfirmation[]>;
24
+ changeAvailability(identifier: string[], request: OCPP1_6.ChangeAvailabilityRequest, callbackUrl?: string, tenantId?: number): Promise<IMessageConfirmation[]>;
25
+ updateFirmware(identifier: string[], request: OCPP1_6.UpdateFirmwareRequest, callbackUrl?: string, tenantId?: number): Promise<IMessageConfirmation[]>;
26
+ dataTransfer(identifier: string[], request: OCPP1_6.DataTransferRequest, callbackUrl?: string, tenantId?: number): Promise<IMessageConfirmation[]>;
27
+ /**
28
+ * Overrides superclass method to generate the URL path based on the input {@link CallAction} and the module's endpoint prefix configuration.
29
+ *
30
+ * @param {CallAction} input - The input {@link CallAction}.
31
+ * @return {string} - The generated URL path.
32
+ */
33
+ protected _toMessagePath(input: CallAction): string;
34
+ }
@@ -0,0 +1,190 @@
1
+ // SPDX-FileCopyrightText: 2025 Contributors to the CitrineOS Project
2
+ //
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
9
+ };
10
+ var __metadata = (this && this.__metadata) || function (k, v) {
11
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
12
+ };
13
+ import { Logger } from 'tslog';
14
+ import { ConfigurationModule } from '../module.js';
15
+ import { AbstractModuleApi, AsMessageEndpoint, DEFAULT_TENANT_ID, OCPP1_6, OCPP1_6_CallAction, OCPP2_0_1_CallAction, OCPPVersion, } from '@citrineos/base';
16
+ import { v4 as uuidv4 } from 'uuid';
17
+ /**
18
+ * Server API for the Configuration component.
19
+ */
20
+ export class ConfigurationOcpp16Api extends AbstractModuleApi {
21
+ /**
22
+ * Constructor for the class.
23
+ *
24
+ * @param {ConfigurationModule} ConfigurationComponent - The Configuration component.
25
+ * @param {FastifyInstance} server - The server instance.
26
+ * @param {Logger<ILogObj>} [logger] - Optional logger instance.
27
+ */
28
+ constructor(ConfigurationComponent, server, logger) {
29
+ super(ConfigurationComponent, server, OCPPVersion.OCPP1_6, logger);
30
+ }
31
+ async triggerMessage(identifier, request, callbackUrl, tenantId = DEFAULT_TENANT_ID) {
32
+ const connectorId = request.connectorId;
33
+ if (connectorId && connectorId <= 0) {
34
+ const errorMsg = `connectorId should be either omitted or greater than 0.`;
35
+ this._logger.error(errorMsg);
36
+ return [{ success: false, payload: errorMsg }];
37
+ }
38
+ const results = identifier.map((id) => this._module.sendCall(id, tenantId, OCPPVersion.OCPP1_6, OCPP2_0_1_CallAction.TriggerMessage, request, callbackUrl));
39
+ return Promise.all(results);
40
+ }
41
+ async changeConfiguration(identifier, request, callbackUrl, tenantId = DEFAULT_TENANT_ID) {
42
+ this._logger.debug('ChangeConfiguration request received:', request);
43
+ const confirmations = identifier.map(async (stationId) => {
44
+ const chargingStation = await this._module.locationRepository.readChargingStationByStationId(tenantId, stationId);
45
+ if (!chargingStation) {
46
+ return {
47
+ success: false,
48
+ payload: `Charging station ${stationId} not found`,
49
+ };
50
+ }
51
+ return await this._module.sendCall(stationId, tenantId, OCPPVersion.OCPP1_6, OCPP1_6_CallAction.ChangeConfiguration, request, callbackUrl);
52
+ });
53
+ return Promise.all(confirmations);
54
+ }
55
+ async getConfiguration(identifier, request, callbackUrl, tenantId = DEFAULT_TENANT_ID) {
56
+ this._logger.debug('GetConfiguration request received:', request);
57
+ const confirmations = [];
58
+ await Promise.all(identifier.map(async (stationId) => {
59
+ const chargingStation = await this._module.locationRepository.readChargingStationByStationId(tenantId, stationId);
60
+ if (!chargingStation) {
61
+ confirmations.push({
62
+ success: false,
63
+ payload: {
64
+ batch: `Station ${stationId}`,
65
+ message: `Charging station ${stationId} not found`,
66
+ stationId,
67
+ },
68
+ });
69
+ return;
70
+ }
71
+ const maxKeysConfig = await this._module.changeConfigurationRepository.readOnlyOneByQuery(tenantId, {
72
+ where: {
73
+ tenantId: tenantId,
74
+ stationId: stationId,
75
+ key: 'GetConfigurationMaxKeys',
76
+ },
77
+ });
78
+ const maxKeys = maxKeysConfig?.value
79
+ ? parseInt(maxKeysConfig.value, 10)
80
+ : Number.MAX_SAFE_INTEGER;
81
+ const keys = request.key || [];
82
+ const sendBatches = async (batches) => {
83
+ return Promise.all(batches.map(async (batch, index) => {
84
+ try {
85
+ const correlationId = uuidv4();
86
+ const batchResult = await this._module.sendCall(stationId, tenantId, OCPPVersion.OCPP1_6, OCPP1_6_CallAction.GetConfiguration, { key: batch }, callbackUrl, correlationId);
87
+ confirmations.push({
88
+ success: batchResult.success,
89
+ payload: {
90
+ batch: `[${index}:${index + batch.length}]`,
91
+ message: `${batchResult.payload}`,
92
+ stationId,
93
+ },
94
+ });
95
+ }
96
+ catch (error) {
97
+ confirmations.push({
98
+ success: false,
99
+ payload: {
100
+ batch: `[${index}:${index + batch.length}]`,
101
+ message: `${error}`,
102
+ stationId,
103
+ },
104
+ });
105
+ }
106
+ }));
107
+ };
108
+ if (keys.length === 0 || keys.length <= maxKeys) {
109
+ await sendBatches([keys]);
110
+ }
111
+ else {
112
+ const batches = [];
113
+ for (let i = 0; i < keys.length; i += maxKeys) {
114
+ batches.push(keys.slice(i, i + maxKeys));
115
+ }
116
+ await sendBatches(batches);
117
+ }
118
+ }));
119
+ return confirmations;
120
+ }
121
+ reset(identifier, request, callbackUrl, tenantId = DEFAULT_TENANT_ID) {
122
+ const results = identifier.map((id) => this._module.sendCall(id, tenantId, OCPPVersion.OCPP1_6, OCPP1_6_CallAction.Reset, request, callbackUrl));
123
+ return Promise.all(results);
124
+ }
125
+ changeAvailability(identifier, request, callbackUrl, tenantId = DEFAULT_TENANT_ID) {
126
+ const results = identifier.map((id) => this._module.sendCall(id, tenantId, OCPPVersion.OCPP1_6, OCPP1_6_CallAction.ChangeAvailability, request, callbackUrl));
127
+ return Promise.all(results);
128
+ }
129
+ updateFirmware(identifier, request, callbackUrl, tenantId = DEFAULT_TENANT_ID) {
130
+ const results = identifier.map((id) => this._module.sendCall(id, tenantId, OCPPVersion.OCPP1_6, OCPP1_6_CallAction.UpdateFirmware, request, callbackUrl));
131
+ return Promise.all(results);
132
+ }
133
+ dataTransfer(identifier, request, callbackUrl, tenantId = DEFAULT_TENANT_ID) {
134
+ const results = identifier.map((id) => this._module.sendCall(id, tenantId, OCPPVersion.OCPP1_6, OCPP1_6_CallAction.DataTransfer, request, callbackUrl));
135
+ return Promise.all(results);
136
+ }
137
+ /**
138
+ * Overrides superclass method to generate the URL path based on the input {@link CallAction} and the module's endpoint prefix configuration.
139
+ *
140
+ * @param {CallAction} input - The input {@link CallAction}.
141
+ * @return {string} - The generated URL path.
142
+ */
143
+ _toMessagePath(input) {
144
+ const endpointPrefix = this._module.config.modules.configuration.endpointPrefix;
145
+ return super._toMessagePath(input, endpointPrefix);
146
+ }
147
+ }
148
+ __decorate([
149
+ AsMessageEndpoint(OCPP1_6_CallAction.TriggerMessage, OCPP1_6.TriggerMessageRequestSchema),
150
+ __metadata("design:type", Function),
151
+ __metadata("design:paramtypes", [Array, Object, String, Number]),
152
+ __metadata("design:returntype", Promise)
153
+ ], ConfigurationOcpp16Api.prototype, "triggerMessage", null);
154
+ __decorate([
155
+ AsMessageEndpoint(OCPP1_6_CallAction.ChangeConfiguration, OCPP1_6.ChangeConfigurationRequestSchema),
156
+ __metadata("design:type", Function),
157
+ __metadata("design:paramtypes", [Array, Object, String, Number]),
158
+ __metadata("design:returntype", Promise)
159
+ ], ConfigurationOcpp16Api.prototype, "changeConfiguration", null);
160
+ __decorate([
161
+ AsMessageEndpoint(OCPP1_6_CallAction.GetConfiguration, OCPP1_6.GetConfigurationRequestSchema),
162
+ __metadata("design:type", Function),
163
+ __metadata("design:paramtypes", [Array, Object, String, Number]),
164
+ __metadata("design:returntype", Promise)
165
+ ], ConfigurationOcpp16Api.prototype, "getConfiguration", null);
166
+ __decorate([
167
+ AsMessageEndpoint(OCPP1_6_CallAction.Reset, OCPP1_6.ResetRequestSchema),
168
+ __metadata("design:type", Function),
169
+ __metadata("design:paramtypes", [Array, Object, String, Number]),
170
+ __metadata("design:returntype", Promise)
171
+ ], ConfigurationOcpp16Api.prototype, "reset", null);
172
+ __decorate([
173
+ AsMessageEndpoint(OCPP1_6_CallAction.ChangeAvailability, OCPP1_6.ChangeAvailabilityRequestSchema),
174
+ __metadata("design:type", Function),
175
+ __metadata("design:paramtypes", [Array, Object, String, Number]),
176
+ __metadata("design:returntype", Promise)
177
+ ], ConfigurationOcpp16Api.prototype, "changeAvailability", null);
178
+ __decorate([
179
+ AsMessageEndpoint(OCPP1_6_CallAction.UpdateFirmware, OCPP1_6.UpdateFirmwareRequestSchema),
180
+ __metadata("design:type", Function),
181
+ __metadata("design:paramtypes", [Array, Object, String, Number]),
182
+ __metadata("design:returntype", Promise)
183
+ ], ConfigurationOcpp16Api.prototype, "updateFirmware", null);
184
+ __decorate([
185
+ AsMessageEndpoint(OCPP1_6_CallAction.DataTransfer, OCPP1_6.DataTransferRequestSchema),
186
+ __metadata("design:type", Function),
187
+ __metadata("design:paramtypes", [Array, Object, String, Number]),
188
+ __metadata("design:returntype", Promise)
189
+ ], ConfigurationOcpp16Api.prototype, "dataTransfer", null);
190
+ //# sourceMappingURL=MessageApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageApi.js","sourceRoot":"","sources":["../../../src/module/1.6/MessageApi.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,EAAE;AACF,sCAAsC;;;;;;;;;;AAItC,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,OAAO,EACP,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC;;GAEG;AACH,MAAM,OAAO,sBACX,SAAQ,iBAAsC;IAG9C;;;;;;OAMG;IACH,YACE,sBAA2C,EAC3C,MAAuB,EACvB,MAAwB;QAExB,KAAK,CAAC,sBAAsB,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC;IAGK,AAAN,KAAK,CAAC,cAAc,CAClB,UAAoB,EACpB,OAAsC,EACtC,WAAoB,EACpB,WAAmB,iBAAiB;QAEpC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACxC,IAAI,WAAW,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAW,yDAAyD,CAAC;YACnF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7B,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,OAAO,GAAoC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACrE,IAAI,CAAC,OAAO,CAAC,QAAQ,CACnB,EAAE,EACF,QAAQ,EACR,WAAW,CAAC,OAAO,EACnB,oBAAoB,CAAC,cAAc,EACnC,OAAO,EACP,WAAW,CACZ,CACF,CAAC;QACF,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAMK,AAAN,KAAK,CAAC,mBAAmB,CACvB,UAAoB,EACpB,OAA2C,EAC3C,WAAoB,EACpB,WAAmB,iBAAiB;QAEpC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,OAAO,CAAC,CAAC;QACrE,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YACvD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,8BAA8B,CAC1F,QAAQ,EACR,SAAS,CACV,CAAC;YACF,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,oBAAoB,SAAS,YAAY;iBACnD,CAAC;YACJ,CAAC;YAED,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAChC,SAAS,EACT,QAAQ,EACR,WAAW,CAAC,OAAO,EACnB,kBAAkB,CAAC,mBAAmB,EACtC,OAAO,EACP,WAAW,CACZ,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;IAGK,AAAN,KAAK,CAAC,gBAAgB,CACpB,UAAoB,EACpB,OAAwC,EACxC,WAAoB,EACpB,WAAmB,iBAAiB;QAEpC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,OAAO,CAAC,CAAC;QAElE,MAAM,aAAa,GAA2B,EAAE,CAAC;QAEjD,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YACjC,MAAM,eAAe,GACnB,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,8BAA8B,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC5F,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,aAAa,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE;wBACP,KAAK,EAAE,WAAW,SAAS,EAAE;wBAC7B,OAAO,EAAE,oBAAoB,SAAS,YAAY;wBAClD,SAAS;qBACV;iBACF,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,kBAAkB,CACvF,QAAQ,EACR;gBACE,KAAK,EAAE;oBACL,QAAQ,EAAE,QAAQ;oBAClB,SAAS,EAAE,SAAS;oBACpB,GAAG,EAAE,yBAAyB;iBAC/B;aACF,CACF,CAAC;YACF,MAAM,OAAO,GAAG,aAAa,EAAE,KAAK;gBAClC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC;gBACnC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;YAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;YAE/B,MAAM,WAAW,GAAG,KAAK,EAAE,OAAmB,EAAE,EAAE;gBAChD,OAAO,OAAO,CAAC,GAAG,CAChB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;oBACjC,IAAI,CAAC;wBACH,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC;wBAC/B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAC7C,SAAS,EACT,QAAQ,EACR,WAAW,CAAC,OAAO,EACnB,kBAAkB,CAAC,gBAAgB,EACnC,EAAE,GAAG,EAAE,KAAK,EAAE,EACd,WAAW,EACX,aAAa,CACd,CAAC;wBAEF,aAAa,CAAC,IAAI,CAAC;4BACjB,OAAO,EAAE,WAAW,CAAC,OAAO;4BAC5B,OAAO,EAAE;gCACP,KAAK,EAAE,IAAI,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG;gCAC3C,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE;gCACjC,SAAS;6BACV;yBACF,CAAC,CAAC;oBACL,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,aAAa,CAAC,IAAI,CAAC;4BACjB,OAAO,EAAE,KAAK;4BACd,OAAO,EAAE;gCACP,KAAK,EAAE,IAAI,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG;gCAC3C,OAAO,EAAE,GAAG,KAAK,EAAE;gCACnB,SAAS;6BACV;yBACF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAC,CACH,CAAC;YACJ,CAAC,CAAC;YAEF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;gBAChD,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,EAAE,CAAC;gBACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;oBAC9C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;gBAC3C,CAAC;gBACD,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,aAAa,CAAC;IACvB,CAAC;IAGD,KAAK,CACH,UAAoB,EACpB,OAA6B,EAC7B,WAAoB,EACpB,WAAmB,iBAAiB;QAEpC,MAAM,OAAO,GAAoC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACrE,IAAI,CAAC,OAAO,CAAC,QAAQ,CACnB,EAAE,EACF,QAAQ,EACR,WAAW,CAAC,OAAO,EACnB,kBAAkB,CAAC,KAAK,EACxB,OAAO,EACP,WAAW,CACZ,CACF,CAAC;QACF,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAGD,kBAAkB,CAChB,UAAoB,EACpB,OAA0C,EAC1C,WAAoB,EACpB,WAAmB,iBAAiB;QAEpC,MAAM,OAAO,GAAoC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACrE,IAAI,CAAC,OAAO,CAAC,QAAQ,CACnB,EAAE,EACF,QAAQ,EACR,WAAW,CAAC,OAAO,EACnB,kBAAkB,CAAC,kBAAkB,EACrC,OAAO,EACP,WAAW,CACZ,CACF,CAAC;QACF,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAGD,cAAc,CACZ,UAAoB,EACpB,OAAsC,EACtC,WAAoB,EACpB,WAAmB,iBAAiB;QAEpC,MAAM,OAAO,GAAoC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACrE,IAAI,CAAC,OAAO,CAAC,QAAQ,CACnB,EAAE,EACF,QAAQ,EACR,WAAW,CAAC,OAAO,EACnB,kBAAkB,CAAC,cAAc,EACjC,OAAO,EACP,WAAW,CACZ,CACF,CAAC;QACF,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAGD,YAAY,CACV,UAAoB,EACpB,OAAoC,EACpC,WAAoB,EACpB,WAAmB,iBAAiB;QAEpC,MAAM,OAAO,GAAoC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACrE,IAAI,CAAC,OAAO,CAAC,QAAQ,CACnB,EAAE,EACF,QAAQ,EACR,WAAW,CAAC,OAAO,EACnB,kBAAkB,CAAC,YAAY,EAC/B,OAAO,EACP,WAAW,CACZ,CACF,CAAC;QACF,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACO,cAAc,CAAC,KAAiB;QACxC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC;QAChF,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IACrD,CAAC;CACF;AAtPO;IADL,iBAAiB,CAAC,kBAAkB,CAAC,cAAc,EAAE,OAAO,CAAC,2BAA2B,CAAC;;;;4DAyBzF;AAMK;IAJL,iBAAiB,CAChB,kBAAkB,CAAC,mBAAmB,EACtC,OAAO,CAAC,gCAAgC,CACzC;;;;iEA+BA;AAGK;IADL,iBAAiB,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,OAAO,CAAC,6BAA6B,CAAC;;;;8DA4F7F;AAGD;IADC,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC;;;;mDAkBvE;AAGD;IADC,iBAAiB,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,OAAO,CAAC,+BAA+B,CAAC;;;;gEAkBjG;AAGD;IADC,iBAAiB,CAAC,kBAAkB,CAAC,cAAc,EAAE,OAAO,CAAC,2BAA2B,CAAC;;;;4DAkBzF;AAGD;IADC,iBAAiB,CAAC,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC,yBAAyB,CAAC;;;;0DAkBrF"}
@@ -0,0 +1,38 @@
1
+ import type { FastifyInstance } from 'fastify';
2
+ import type { ILogObj } from 'tslog';
3
+ import { Logger } from 'tslog';
4
+ import type { IConfigurationModuleApi } from '../interface.js';
5
+ import { ConfigurationModule } from '../module.js';
6
+ import type { CallAction, IMessageConfirmation } from '@citrineos/base';
7
+ import { AbstractModuleApi, OCPP2_0_1 } from '@citrineos/base';
8
+ /**
9
+ * Server API for the Configuration component.
10
+ */
11
+ export declare class ConfigurationOcpp201Api extends AbstractModuleApi<ConfigurationModule> implements IConfigurationModuleApi {
12
+ /**
13
+ * Constructor for the class.
14
+ *
15
+ * @param {ConfigurationModule} ConfigurationComponent - The Configuration component.
16
+ * @param {FastifyInstance} server - The server instance.
17
+ * @param {Logger<ILogObj>} [logger] - Optional logger instance.
18
+ */
19
+ constructor(ConfigurationComponent: ConfigurationModule, server: FastifyInstance, logger?: Logger<ILogObj>);
20
+ setNetworkProfile(identifier: string[], request: OCPP2_0_1.SetNetworkProfileRequest, callbackUrl?: string, extraQueries?: Record<string, any>, tenantId?: number): Promise<IMessageConfirmation[]>;
21
+ clearDisplayMessage(identifier: string[], request: OCPP2_0_1.ClearDisplayMessageRequest, callbackUrl?: string, tenantId?: number): Promise<IMessageConfirmation[]>;
22
+ getDisplayMessages(identifier: string[], request: OCPP2_0_1.GetDisplayMessagesRequest, callbackUrl?: string, tenantId?: number): Promise<IMessageConfirmation[]>;
23
+ publishFirmware(identifier: string[], request: OCPP2_0_1.PublishFirmwareRequest, callbackUrl?: string, tenantId?: number): Promise<IMessageConfirmation[]>;
24
+ setDisplayMessage(identifier: string[], request: OCPP2_0_1.SetDisplayMessageRequest, callbackUrl?: string, tenantId?: number): Promise<IMessageConfirmation[]>;
25
+ unpublishFirmware(identifier: string[], request: OCPP2_0_1.UnpublishFirmwareRequest, callbackUrl?: string, tenantId?: number): Promise<IMessageConfirmation[]>;
26
+ updateFirmware(identifier: string[], request: OCPP2_0_1.UpdateFirmwareRequest, callbackUrl?: string, tenantId?: number): Promise<IMessageConfirmation[]>;
27
+ reset(identifier: string[], request: OCPP2_0_1.ResetRequest, callbackUrl?: string, tenantId?: number): Promise<IMessageConfirmation[]>;
28
+ changeAvailability(identifier: string[], request: OCPP2_0_1.ChangeAvailabilityRequest, callbackUrl?: string, tenantId?: number): Promise<IMessageConfirmation[]>;
29
+ triggerMessage(identifier: string[], request: OCPP2_0_1.TriggerMessageRequest, callbackUrl?: string, tenantId?: number): Promise<IMessageConfirmation[]>;
30
+ dataTransfer(identifier: string[], request: OCPP2_0_1.DataTransferRequest, callbackUrl?: string, tenantId?: number): Promise<IMessageConfirmation[]>;
31
+ /**
32
+ * Overrides superclass method to generate the URL path based on the input {@link CallAction} and the module's endpoint prefix configuration.
33
+ *
34
+ * @param {CallAction} input - The input {@link CallAction}.
35
+ * @return {string} - The generated URL path.
36
+ */
37
+ protected _toMessagePath(input: CallAction): string;
38
+ }
@@ -0,0 +1,183 @@
1
+ // SPDX-FileCopyrightText: 2025 Contributors to the CitrineOS Project
2
+ //
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
9
+ };
10
+ var __metadata = (this && this.__metadata) || function (k, v) {
11
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
12
+ };
13
+ import { Logger } from 'tslog';
14
+ import { ConfigurationModule } from '../module.js';
15
+ import { AbstractModuleApi, AsMessageEndpoint, DEFAULT_TENANT_ID, OCPP2_0_1, OCPP2_0_1_CallAction, OCPPVersion, } from '@citrineos/base';
16
+ import { SetNetworkProfile } from '@citrineos/data';
17
+ import { validateLanguageTag } from '@citrineos/util';
18
+ import { v4 as uuidv4 } from 'uuid';
19
+ var SetNetworkProfileExtraQuerystrings;
20
+ (function (SetNetworkProfileExtraQuerystrings) {
21
+ SetNetworkProfileExtraQuerystrings["websocketServerConfigId"] = "websocketServerConfigId";
22
+ })(SetNetworkProfileExtraQuerystrings || (SetNetworkProfileExtraQuerystrings = {}));
23
+ /**
24
+ * Server API for the Configuration component.
25
+ */
26
+ export class ConfigurationOcpp201Api extends AbstractModuleApi {
27
+ /**
28
+ * Constructor for the class.
29
+ *
30
+ * @param {ConfigurationModule} ConfigurationComponent - The Configuration component.
31
+ * @param {FastifyInstance} server - The server instance.
32
+ * @param {Logger<ILogObj>} [logger] - Optional logger instance.
33
+ */
34
+ constructor(ConfigurationComponent, server, logger) {
35
+ super(ConfigurationComponent, server, OCPPVersion.OCPP2_0_1, logger);
36
+ }
37
+ async setNetworkProfile(identifier, request, callbackUrl, extraQueries, tenantId = DEFAULT_TENANT_ID) {
38
+ const correlationId = uuidv4();
39
+ if (extraQueries) {
40
+ const websocketServerConfigId = extraQueries[SetNetworkProfileExtraQuerystrings.websocketServerConfigId];
41
+ await SetNetworkProfile.build({
42
+ stationId: identifier,
43
+ tenantId,
44
+ correlationId,
45
+ configurationSlot: request.configurationSlot,
46
+ websocketServerConfigId,
47
+ apn: JSON.stringify(request.connectionData.apn),
48
+ vpn: JSON.stringify(request.connectionData.vpn),
49
+ ...request.connectionData,
50
+ }).save();
51
+ }
52
+ const results = identifier.map((id) => this._module.sendCall(id, tenantId, OCPPVersion.OCPP2_0_1, OCPP2_0_1_CallAction.SetNetworkProfile, request, callbackUrl, correlationId));
53
+ return Promise.all(results);
54
+ }
55
+ clearDisplayMessage(identifier, request, callbackUrl, tenantId = DEFAULT_TENANT_ID) {
56
+ const results = identifier.map((id) => this._module.sendCall(id, tenantId, OCPPVersion.OCPP2_0_1, OCPP2_0_1_CallAction.ClearDisplayMessage, request, callbackUrl));
57
+ return Promise.all(results);
58
+ }
59
+ getDisplayMessages(identifier, request, callbackUrl, tenantId = DEFAULT_TENANT_ID) {
60
+ const results = identifier.map((id) => this._module.sendCall(id, tenantId, OCPPVersion.OCPP2_0_1, OCPP2_0_1_CallAction.GetDisplayMessages, request, callbackUrl));
61
+ return Promise.all(results);
62
+ }
63
+ publishFirmware(identifier, request, callbackUrl, tenantId = DEFAULT_TENANT_ID) {
64
+ const results = identifier.map((id) => this._module.sendCall(id, tenantId, OCPPVersion.OCPP2_0_1, OCPP2_0_1_CallAction.PublishFirmware, request, callbackUrl));
65
+ return Promise.all(results);
66
+ }
67
+ async setDisplayMessage(identifier, request, callbackUrl, tenantId = DEFAULT_TENANT_ID) {
68
+ const messageInfo = request.message;
69
+ const languageTag = messageInfo.message.language;
70
+ if (languageTag && !validateLanguageTag(languageTag)) {
71
+ const errorMsg = 'Language shall be specified as RFC-5646 tags, example: en-US for US English.';
72
+ this._logger.error(errorMsg);
73
+ return [{ success: false, payload: errorMsg }];
74
+ }
75
+ // If omitted, startDateTime defaults to "now".
76
+ if (!messageInfo.startDateTime) {
77
+ messageInfo.startDateTime = new Date().toISOString();
78
+ }
79
+ const results = identifier.map((id) => this._module.sendCall(id, tenantId, OCPPVersion.OCPP2_0_1, OCPP2_0_1_CallAction.SetDisplayMessage, request, callbackUrl));
80
+ return Promise.all(results);
81
+ }
82
+ unpublishFirmware(identifier, request, callbackUrl, tenantId = DEFAULT_TENANT_ID) {
83
+ const results = identifier.map((id) => this._module.sendCall(id, tenantId, OCPPVersion.OCPP2_0_1, OCPP2_0_1_CallAction.UnpublishFirmware, request, callbackUrl));
84
+ return Promise.all(results);
85
+ }
86
+ updateFirmware(identifier, request, callbackUrl, tenantId = DEFAULT_TENANT_ID) {
87
+ const results = identifier.map((id) => this._module.sendCall(id, tenantId, OCPPVersion.OCPP2_0_1, OCPP2_0_1_CallAction.UpdateFirmware, request, callbackUrl));
88
+ return Promise.all(results);
89
+ }
90
+ reset(identifier, request, callbackUrl, tenantId = DEFAULT_TENANT_ID) {
91
+ const results = identifier.map((id) => this._module.sendCall(id, tenantId, OCPPVersion.OCPP2_0_1, OCPP2_0_1_CallAction.Reset, request, callbackUrl));
92
+ return Promise.all(results);
93
+ }
94
+ changeAvailability(identifier, request, callbackUrl, tenantId = DEFAULT_TENANT_ID) {
95
+ const results = identifier.map((id) => this._module.sendCall(id, tenantId, OCPPVersion.OCPP2_0_1, OCPP2_0_1_CallAction.ChangeAvailability, request, callbackUrl));
96
+ return Promise.all(results);
97
+ }
98
+ triggerMessage(identifier, request, callbackUrl, tenantId = DEFAULT_TENANT_ID) {
99
+ const results = identifier.map((id) => this._module.sendCall(id, tenantId, OCPPVersion.OCPP2_0_1, OCPP2_0_1_CallAction.TriggerMessage, request, callbackUrl));
100
+ return Promise.all(results);
101
+ }
102
+ dataTransfer(identifier, request, callbackUrl, tenantId = DEFAULT_TENANT_ID) {
103
+ const results = identifier.map((id) => this._module.sendCall(id, tenantId, OCPPVersion.OCPP2_0_1, OCPP2_0_1_CallAction.DataTransfer, request, callbackUrl));
104
+ return Promise.all(results);
105
+ }
106
+ /**
107
+ * Overrides superclass method to generate the URL path based on the input {@link CallAction} and the module's endpoint prefix configuration.
108
+ *
109
+ * @param {CallAction} input - The input {@link CallAction}.
110
+ * @return {string} - The generated URL path.
111
+ */
112
+ _toMessagePath(input) {
113
+ const endpointPrefix = this._module.config.modules.configuration.endpointPrefix;
114
+ return super._toMessagePath(input, endpointPrefix);
115
+ }
116
+ }
117
+ __decorate([
118
+ AsMessageEndpoint(OCPP2_0_1_CallAction.SetNetworkProfile, OCPP2_0_1.SetNetworkProfileRequestSchema, { websocketServerConfigId: { type: 'string' } }),
119
+ __metadata("design:type", Function),
120
+ __metadata("design:paramtypes", [Array, Object, String, Object, Number]),
121
+ __metadata("design:returntype", Promise)
122
+ ], ConfigurationOcpp201Api.prototype, "setNetworkProfile", null);
123
+ __decorate([
124
+ AsMessageEndpoint(OCPP2_0_1_CallAction.ClearDisplayMessage, OCPP2_0_1.ClearDisplayMessageRequestSchema),
125
+ __metadata("design:type", Function),
126
+ __metadata("design:paramtypes", [Array, Object, String, Number]),
127
+ __metadata("design:returntype", Promise)
128
+ ], ConfigurationOcpp201Api.prototype, "clearDisplayMessage", null);
129
+ __decorate([
130
+ AsMessageEndpoint(OCPP2_0_1_CallAction.GetDisplayMessages, OCPP2_0_1.GetDisplayMessagesRequestSchema),
131
+ __metadata("design:type", Function),
132
+ __metadata("design:paramtypes", [Array, Object, String, Number]),
133
+ __metadata("design:returntype", Promise)
134
+ ], ConfigurationOcpp201Api.prototype, "getDisplayMessages", null);
135
+ __decorate([
136
+ AsMessageEndpoint(OCPP2_0_1_CallAction.PublishFirmware, OCPP2_0_1.PublishFirmwareRequestSchema),
137
+ __metadata("design:type", Function),
138
+ __metadata("design:paramtypes", [Array, Object, String, Number]),
139
+ __metadata("design:returntype", Promise)
140
+ ], ConfigurationOcpp201Api.prototype, "publishFirmware", null);
141
+ __decorate([
142
+ AsMessageEndpoint(OCPP2_0_1_CallAction.SetDisplayMessage, OCPP2_0_1.SetDisplayMessageRequestSchema),
143
+ __metadata("design:type", Function),
144
+ __metadata("design:paramtypes", [Array, Object, String, Number]),
145
+ __metadata("design:returntype", Promise)
146
+ ], ConfigurationOcpp201Api.prototype, "setDisplayMessage", null);
147
+ __decorate([
148
+ AsMessageEndpoint(OCPP2_0_1_CallAction.UnpublishFirmware, OCPP2_0_1.UnpublishFirmwareRequestSchema),
149
+ __metadata("design:type", Function),
150
+ __metadata("design:paramtypes", [Array, Object, String, Number]),
151
+ __metadata("design:returntype", Promise)
152
+ ], ConfigurationOcpp201Api.prototype, "unpublishFirmware", null);
153
+ __decorate([
154
+ AsMessageEndpoint(OCPP2_0_1_CallAction.UpdateFirmware, OCPP2_0_1.UpdateFirmwareRequestSchema),
155
+ __metadata("design:type", Function),
156
+ __metadata("design:paramtypes", [Array, Object, String, Number]),
157
+ __metadata("design:returntype", Promise)
158
+ ], ConfigurationOcpp201Api.prototype, "updateFirmware", null);
159
+ __decorate([
160
+ AsMessageEndpoint(OCPP2_0_1_CallAction.Reset, OCPP2_0_1.ResetRequestSchema),
161
+ __metadata("design:type", Function),
162
+ __metadata("design:paramtypes", [Array, Object, String, Number]),
163
+ __metadata("design:returntype", Promise)
164
+ ], ConfigurationOcpp201Api.prototype, "reset", null);
165
+ __decorate([
166
+ AsMessageEndpoint(OCPP2_0_1_CallAction.ChangeAvailability, OCPP2_0_1.ChangeAvailabilityRequestSchema),
167
+ __metadata("design:type", Function),
168
+ __metadata("design:paramtypes", [Array, Object, String, Number]),
169
+ __metadata("design:returntype", Promise)
170
+ ], ConfigurationOcpp201Api.prototype, "changeAvailability", null);
171
+ __decorate([
172
+ AsMessageEndpoint(OCPP2_0_1_CallAction.TriggerMessage, OCPP2_0_1.TriggerMessageRequestSchema),
173
+ __metadata("design:type", Function),
174
+ __metadata("design:paramtypes", [Array, Object, String, Number]),
175
+ __metadata("design:returntype", Promise)
176
+ ], ConfigurationOcpp201Api.prototype, "triggerMessage", null);
177
+ __decorate([
178
+ AsMessageEndpoint(OCPP2_0_1_CallAction.DataTransfer, OCPP2_0_1.DataTransferRequestSchema),
179
+ __metadata("design:type", Function),
180
+ __metadata("design:paramtypes", [Array, Object, String, Number]),
181
+ __metadata("design:returntype", Promise)
182
+ ], ConfigurationOcpp201Api.prototype, "dataTransfer", null);
183
+ //# sourceMappingURL=MessageApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageApi.js","sourceRoot":"","sources":["../../../src/module/2.0.1/MessageApi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { IBootRepository } from '@citrineos/data';
2
+ import { Boot } from '@citrineos/data';
3
+ import type { BootConfig, ICache, IMessageConfirmation, SystemConfig } from '@citrineos/base';
4
+ import { OCPP1_6, OCPP2_0_1 } from '@citrineos/base';
5
+ import type { ILogObj } from 'tslog';
6
+ import { Logger } from 'tslog';
7
+ type Configuration = SystemConfig['modules']['configuration'];
8
+ export declare class BootNotificationService {
9
+ protected _bootRepository: IBootRepository;
10
+ protected _cache: ICache;
11
+ protected _logger: Logger<ILogObj>;
12
+ protected _config: Configuration;
13
+ constructor(bootRepository: IBootRepository, cache: ICache, config: Configuration, logger?: Logger<ILogObj>);
14
+ determineBootStatus(bootConfig: Boot | undefined): OCPP2_0_1.RegistrationStatusEnumType;
15
+ createBootNotificationResponse(tenantId: number, stationId: string): Promise<OCPP2_0_1.BootNotificationResponse>;
16
+ updateBootConfig(bootNotificationResponse: OCPP2_0_1.BootNotificationResponse, tenantId: number, stationId: string): Promise<Boot>;
17
+ /**
18
+ * Determines whether to blacklist or whitelist charger actions based on its boot status.
19
+ *
20
+ * If the new boot is accepted and the charger actions were previously blacklisted, then whitelist the charger actions.
21
+ * If the new boot is not accepted and charger actions were previously whitelisted, then blacklist the charger actions.
22
+ *
23
+ * @param stationId
24
+ * @param cachedBootStatus
25
+ * @param bootNotificationResponseStatus
26
+ */
27
+ cacheChargerActionsPermissions(stationId: string, cachedBootStatus: OCPP2_0_1.RegistrationStatusEnumType | null, bootNotificationResponseStatus: OCPP2_0_1.RegistrationStatusEnumType): Promise<void>;
28
+ createGetBaseReportRequest(stationId: string, maxCachingSeconds: number): Promise<OCPP2_0_1.GetBaseReportRequest>;
29
+ /**
30
+ * Based on the GetBaseReportMessageConfirmation, checks the cache to ensure GetBaseReport truly succeeded.
31
+ * If GetBaseReport did not succeed, this method will throw. Otherwise, it will finish without throwing.
32
+ *
33
+ * @param stationId
34
+ * @param requestId
35
+ * @param getBaseReportMessageConfirmation
36
+ * @param maxCachingSeconds
37
+ */
38
+ confirmGetBaseReportSuccess(stationId: string, requestId: string, getBaseReportMessageConfirmation: IMessageConfirmation, maxCachingSeconds: number): Promise<void>;
39
+ /**
40
+ * Methods for OCPP 1.6
41
+ */
42
+ determineOcpp16BootStatus(bootConfig: BootConfig | undefined): OCPP1_6.BootNotificationResponseStatus;
43
+ createOcpp16BootNotificationResponse(tenantId: number, stationId: string): Promise<OCPP1_6.BootNotificationResponse>;
44
+ /**
45
+ * Determines whether to blacklist or whitelist charger actions based on its boot status.
46
+ *
47
+ * If the new boot is accepted and the charger actions were previously blacklisted, then whitelist the charger actions.
48
+ * If the new boot is not accepted and charger actions were previously whitelisted, then blacklist the charger actions.
49
+ *
50
+ * @param stationId
51
+ * @param cachedBootStatus
52
+ * @param bootNotificationResponseStatus
53
+ */
54
+ cacheOcpp16ChargerActionsPermissions(stationId: string, cachedBootStatus: OCPP1_6.BootNotificationResponseStatus | null, bootNotificationResponseStatus: OCPP1_6.BootNotificationResponseStatus): Promise<void>;
55
+ updateOcpp16BootConfig(response: OCPP1_6.BootNotificationResponse, tenantId: number, stationId: string): Promise<Boot>;
56
+ }
57
+ export {};