// SPDX-FileCopyrightText: 2025 Contributors to the CitrineOS Project
//
// SPDX-License-Identifier: Apache-2.0

import { OCPP1_6, OCPP2_0_1, OCPP2_1 } from '@ocpp/model/index.js';
import { OCPP_CallAction } from '@ocpp/rpc/message.js';

export const OCPP1_6_CALL_SCHEMA_RECORD: Record<string, object> = {
  [OCPP_CallAction.Authorize]: OCPP1_6.AuthorizeRequestSchema,
  [OCPP_CallAction.BootNotification]: OCPP1_6.BootNotificationRequestSchema,
  [OCPP_CallAction.CancelReservation]: OCPP1_6.CancelReservationRequestSchema,
  [OCPP_CallAction.ChangeAvailability]: OCPP1_6.ChangeAvailabilityRequestSchema,
  [OCPP_CallAction.ChangeConfiguration]: OCPP1_6.ChangeConfigurationRequestSchema,
  [OCPP_CallAction.ClearCache]: OCPP1_6.ClearCacheRequestSchema,
  [OCPP_CallAction.ClearChargingProfile]: OCPP1_6.ClearChargingProfileRequestSchema,
  [OCPP_CallAction.DataTransfer]: OCPP1_6.DataTransferRequestSchema,
  [OCPP_CallAction.DiagnosticsStatusNotification]:
    OCPP1_6.DiagnosticsStatusNotificationRequestSchema,
  [OCPP_CallAction.FirmwareStatusNotification]: OCPP1_6.FirmwareStatusNotificationRequestSchema,
  [OCPP_CallAction.GetCompositeSchedule]: OCPP1_6.GetCompositeScheduleRequestSchema,
  [OCPP_CallAction.GetConfiguration]: OCPP1_6.GetConfigurationRequestSchema,
  [OCPP_CallAction.GetDiagnostics]: OCPP1_6.GetDiagnosticsRequestSchema,
  [OCPP_CallAction.GetLocalListVersion]: OCPP1_6.GetLocalListVersionRequestSchema,
  [OCPP_CallAction.Heartbeat]: OCPP1_6.HeartbeatRequestSchema,
  [OCPP_CallAction.MeterValues]: OCPP1_6.MeterValuesRequestSchema,
  [OCPP_CallAction.RemoteStartTransaction]: OCPP1_6.RemoteStartTransactionRequestSchema,
  [OCPP_CallAction.RemoteStopTransaction]: OCPP1_6.RemoteStopTransactionRequestSchema,
  [OCPP_CallAction.ReserveNow]: OCPP1_6.ReserveNowRequestSchema,
  [OCPP_CallAction.Reset]: OCPP1_6.ResetRequestSchema,
  [OCPP_CallAction.SendLocalList]: OCPP1_6.SendLocalListRequestSchema,
  [OCPP_CallAction.SetChargingProfile]: OCPP1_6.SetChargingProfileRequestSchema,
  [OCPP_CallAction.StartTransaction]: OCPP1_6.StartTransactionRequestSchema,
  [OCPP_CallAction.StatusNotification]: OCPP1_6.StatusNotificationRequestSchema,
  [OCPP_CallAction.StopTransaction]: OCPP1_6.StopTransactionRequestSchema,
  [OCPP_CallAction.TriggerMessage]: OCPP1_6.TriggerMessageRequestSchema,
  [OCPP_CallAction.UnlockConnector]: OCPP1_6.UnlockConnectorRequestSchema,
  [OCPP_CallAction.UpdateFirmware]: OCPP1_6.UpdateFirmwareRequestSchema,
};

// Action requests supported by OCPP 2.0.1
export const OCPP2_0_1_CALL_SCHEMA_RECORD: Record<string, object> = {
  [OCPP_CallAction.Authorize]: OCPP2_0_1.AuthorizeRequestSchema,
  [OCPP_CallAction.BootNotification]: OCPP2_0_1.BootNotificationRequestSchema,
  [OCPP_CallAction.CancelReservation]: OCPP2_0_1.CancelReservationRequestSchema,
  [OCPP_CallAction.CertificateSigned]: OCPP2_0_1.CertificateSignedRequestSchema,
  [OCPP_CallAction.ChangeAvailability]: OCPP2_0_1.ChangeAvailabilityRequestSchema,
  [OCPP_CallAction.ClearCache]: OCPP2_0_1.ClearCacheRequestSchema,
  [OCPP_CallAction.ClearChargingProfile]: OCPP2_0_1.ClearChargingProfileRequestSchema,
  [OCPP_CallAction.ClearDisplayMessage]: OCPP2_0_1.ClearDisplayMessageRequestSchema,
  [OCPP_CallAction.ClearedChargingLimit]: OCPP2_0_1.ClearedChargingLimitRequestSchema,
  [OCPP_CallAction.ClearVariableMonitoring]: OCPP2_0_1.ClearVariableMonitoringRequestSchema,
  [OCPP_CallAction.CostUpdated]: OCPP2_0_1.CostUpdatedRequestSchema,
  [OCPP_CallAction.CustomerInformation]: OCPP2_0_1.CustomerInformationRequestSchema,
  [OCPP_CallAction.DataTransfer]: OCPP2_0_1.DataTransferRequestSchema,
  [OCPP_CallAction.DeleteCertificate]: OCPP2_0_1.DeleteCertificateRequestSchema,
  [OCPP_CallAction.FirmwareStatusNotification]: OCPP2_0_1.FirmwareStatusNotificationRequestSchema,

  [OCPP_CallAction.Get15118EVCertificate]: OCPP2_0_1.Get15118EVCertificateRequestSchema,
  [OCPP_CallAction.GetBaseReport]: OCPP2_0_1.GetBaseReportRequestSchema,
  [OCPP_CallAction.GetCertificateStatus]: OCPP2_0_1.GetCertificateStatusRequestSchema,
  [OCPP_CallAction.GetChargingProfiles]: OCPP2_0_1.GetChargingProfilesRequestSchema,
  [OCPP_CallAction.GetCompositeSchedule]: OCPP2_0_1.GetCompositeScheduleRequestSchema,
  [OCPP_CallAction.GetDisplayMessages]: OCPP2_0_1.GetDisplayMessagesRequestSchema,
  [OCPP_CallAction.GetInstalledCertificateIds]: OCPP2_0_1.GetInstalledCertificateIdsRequestSchema,

  [OCPP_CallAction.GetLocalListVersion]: OCPP2_0_1.GetLocalListVersionRequestSchema,
  [OCPP_CallAction.GetLog]: OCPP2_0_1.GetLogRequestSchema,
  [OCPP_CallAction.GetMonitoringReport]: OCPP2_0_1.GetMonitoringReportRequestSchema,
  [OCPP_CallAction.GetReport]: OCPP2_0_1.GetReportRequestSchema,
  [OCPP_CallAction.GetTransactionStatus]: OCPP2_0_1.GetTransactionStatusRequestSchema,
  [OCPP_CallAction.GetVariables]: OCPP2_0_1.GetVariablesRequestSchema,
  [OCPP_CallAction.Heartbeat]: OCPP2_0_1.HeartbeatRequestSchema,
  [OCPP_CallAction.InstallCertificate]: OCPP2_0_1.InstallCertificateRequestSchema,
  [OCPP_CallAction.LogStatusNotification]: OCPP2_0_1.LogStatusNotificationRequestSchema,
  [OCPP_CallAction.MeterValues]: OCPP2_0_1.MeterValuesRequestSchema,
  [OCPP_CallAction.NotifyChargingLimit]: OCPP2_0_1.NotifyChargingLimitRequestSchema,
  [OCPP_CallAction.NotifyCustomerInformation]: OCPP2_0_1.NotifyCustomerInformationRequestSchema,

  [OCPP_CallAction.NotifyDisplayMessages]: OCPP2_0_1.NotifyDisplayMessagesRequestSchema,
  [OCPP_CallAction.NotifyEVChargingNeeds]: OCPP2_0_1.NotifyEVChargingNeedsRequestSchema,
  [OCPP_CallAction.NotifyEVChargingSchedule]: OCPP2_0_1.NotifyEVChargingScheduleRequestSchema,
  [OCPP_CallAction.NotifyEvent]: OCPP2_0_1.NotifyEventRequestSchema,
  [OCPP_CallAction.NotifyMonitoringReport]: OCPP2_0_1.NotifyMonitoringReportRequestSchema,
  [OCPP_CallAction.NotifyReport]: OCPP2_0_1.NotifyReportRequestSchema,
  [OCPP_CallAction.PublishFirmware]: OCPP2_0_1.PublishFirmwareRequestSchema,
  [OCPP_CallAction.PublishFirmwareStatusNotification]:
    OCPP2_0_1.PublishFirmwareStatusNotificationRequestSchema,

  [OCPP_CallAction.ReportChargingProfiles]: OCPP2_0_1.ReportChargingProfilesRequestSchema,
  [OCPP_CallAction.RequestStartTransaction]: OCPP2_0_1.RequestStartTransactionRequestSchema,
  [OCPP_CallAction.RequestStopTransaction]: OCPP2_0_1.RequestStopTransactionRequestSchema,
  [OCPP_CallAction.ReservationStatusUpdate]: OCPP2_0_1.ReservationStatusUpdateRequestSchema,
  [OCPP_CallAction.ReserveNow]: OCPP2_0_1.ReserveNowRequestSchema,
  [OCPP_CallAction.Reset]: OCPP2_0_1.ResetRequestSchema,
  [OCPP_CallAction.SecurityEventNotification]: OCPP2_0_1.SecurityEventNotificationRequestSchema,

  [OCPP_CallAction.SendLocalList]: OCPP2_0_1.SendLocalListRequestSchema,
  [OCPP_CallAction.SetChargingProfile]: OCPP2_0_1.SetChargingProfileRequestSchema,
  [OCPP_CallAction.SetDisplayMessage]: OCPP2_0_1.SetDisplayMessageRequestSchema,
  [OCPP_CallAction.SetMonitoringBase]: OCPP2_0_1.SetMonitoringBaseRequestSchema,
  [OCPP_CallAction.SetMonitoringLevel]: OCPP2_0_1.SetMonitoringLevelRequestSchema,
  [OCPP_CallAction.SetNetworkProfile]: OCPP2_0_1.SetNetworkProfileRequestSchema,
  [OCPP_CallAction.SetVariableMonitoring]: OCPP2_0_1.SetVariableMonitoringRequestSchema,
  [OCPP_CallAction.SetVariables]: OCPP2_0_1.SetVariablesRequestSchema,
  [OCPP_CallAction.SignCertificate]: OCPP2_0_1.SignCertificateRequestSchema,
  [OCPP_CallAction.StatusNotification]: OCPP2_0_1.StatusNotificationRequestSchema,
  [OCPP_CallAction.TransactionEvent]: OCPP2_0_1.TransactionEventRequestSchema,
  [OCPP_CallAction.TriggerMessage]: OCPP2_0_1.TriggerMessageRequestSchema,
  [OCPP_CallAction.UnlockConnector]: OCPP2_0_1.UnlockConnectorRequestSchema,
  [OCPP_CallAction.UnpublishFirmware]: OCPP2_0_1.UnpublishFirmwareRequestSchema,
  [OCPP_CallAction.UpdateFirmware]: OCPP2_0_1.UpdateFirmwareRequestSchema,
};

// Action requests supported by OCPP 2.1
export const OCPP2_1_CALL_SCHEMA_RECORD: Record<string, object> = {
  [OCPP_CallAction.Authorize]: OCPP2_1.AuthorizeRequestSchema,
  [OCPP_CallAction.BootNotification]: OCPP2_1.BootNotificationRequestSchema,
  [OCPP_CallAction.CancelReservation]: OCPP2_1.CancelReservationRequestSchema,
  [OCPP_CallAction.CertificateSigned]: OCPP2_1.CertificateSignedRequestSchema,
  [OCPP_CallAction.ChangeAvailability]: OCPP2_1.ChangeAvailabilityRequestSchema,
  [OCPP_CallAction.ClearCache]: OCPP2_1.ClearCacheRequestSchema,
  [OCPP_CallAction.ClearChargingProfile]: OCPP2_1.ClearChargingProfileRequestSchema,
  [OCPP_CallAction.ClearDisplayMessage]: OCPP2_1.ClearDisplayMessageRequestSchema,
  [OCPP_CallAction.ClearedChargingLimit]: OCPP2_1.ClearedChargingLimitRequestSchema,
  [OCPP_CallAction.ClearVariableMonitoring]: OCPP2_1.ClearVariableMonitoringRequestSchema,
  [OCPP_CallAction.CostUpdated]: OCPP2_1.CostUpdatedRequestSchema,
  [OCPP_CallAction.CustomerInformation]: OCPP2_1.CustomerInformationRequestSchema,
  [OCPP_CallAction.DataTransfer]: OCPP2_1.DataTransferRequestSchema,
  [OCPP_CallAction.DeleteCertificate]: OCPP2_1.DeleteCertificateRequestSchema,
  [OCPP_CallAction.FirmwareStatusNotification]: OCPP2_1.FirmwareStatusNotificationRequestSchema,

  [OCPP_CallAction.Get15118EVCertificate]: OCPP2_1.Get15118EVCertificateRequestSchema,
  [OCPP_CallAction.GetBaseReport]: OCPP2_1.GetBaseReportRequestSchema,
  [OCPP_CallAction.GetCertificateStatus]: OCPP2_1.GetCertificateStatusRequestSchema,
  [OCPP_CallAction.GetChargingProfiles]: OCPP2_1.GetChargingProfilesRequestSchema,
  [OCPP_CallAction.GetCompositeSchedule]: OCPP2_1.GetCompositeScheduleRequestSchema,
  [OCPP_CallAction.GetDisplayMessages]: OCPP2_1.GetDisplayMessagesRequestSchema,
  [OCPP_CallAction.GetInstalledCertificateIds]: OCPP2_1.GetInstalledCertificateIdsRequestSchema,

  [OCPP_CallAction.GetLocalListVersion]: OCPP2_1.GetLocalListVersionRequestSchema,
  [OCPP_CallAction.GetLog]: OCPP2_1.GetLogRequestSchema,
  [OCPP_CallAction.GetMonitoringReport]: OCPP2_1.GetMonitoringReportRequestSchema,
  [OCPP_CallAction.GetReport]: OCPP2_1.GetReportRequestSchema,
  [OCPP_CallAction.GetTransactionStatus]: OCPP2_1.GetTransactionStatusRequestSchema,
  [OCPP_CallAction.GetVariables]: OCPP2_1.GetVariablesRequestSchema,
  [OCPP_CallAction.Heartbeat]: OCPP2_1.HeartbeatRequestSchema,
  [OCPP_CallAction.InstallCertificate]: OCPP2_1.InstallCertificateRequestSchema,
  [OCPP_CallAction.LogStatusNotification]: OCPP2_1.LogStatusNotificationRequestSchema,
  [OCPP_CallAction.MeterValues]: OCPP2_1.MeterValuesRequestSchema,
  [OCPP_CallAction.NotifyChargingLimit]: OCPP2_1.NotifyChargingLimitRequestSchema,
  [OCPP_CallAction.NotifyCustomerInformation]: OCPP2_1.NotifyCustomerInformationRequestSchema,

  [OCPP_CallAction.NotifyDisplayMessages]: OCPP2_1.NotifyDisplayMessagesRequestSchema,
  [OCPP_CallAction.NotifyEVChargingNeeds]: OCPP2_1.NotifyEVChargingNeedsRequestSchema,
  [OCPP_CallAction.NotifyEVChargingSchedule]: OCPP2_1.NotifyEVChargingScheduleRequestSchema,
  [OCPP_CallAction.NotifyEvent]: OCPP2_1.NotifyEventRequestSchema,
  [OCPP_CallAction.NotifyMonitoringReport]: OCPP2_1.NotifyMonitoringReportRequestSchema,
  [OCPP_CallAction.NotifyReport]: OCPP2_1.NotifyReportRequestSchema,
  [OCPP_CallAction.NotifySettlement]: OCPP2_1.NotifySettlementRequestSchema,
  [OCPP_CallAction.PublishFirmware]: OCPP2_1.PublishFirmwareRequestSchema,
  [OCPP_CallAction.PublishFirmwareStatusNotification]:
    OCPP2_1.PublishFirmwareStatusNotificationRequestSchema,

  [OCPP_CallAction.ReportChargingProfiles]: OCPP2_1.ReportChargingProfilesRequestSchema,
  [OCPP_CallAction.RequestStartTransaction]: OCPP2_1.RequestStartTransactionRequestSchema,
  [OCPP_CallAction.RequestStopTransaction]: OCPP2_1.RequestStopTransactionRequestSchema,
  [OCPP_CallAction.ReservationStatusUpdate]: OCPP2_1.ReservationStatusUpdateRequestSchema,
  [OCPP_CallAction.ReserveNow]: OCPP2_1.ReserveNowRequestSchema,
  [OCPP_CallAction.Reset]: OCPP2_1.ResetRequestSchema,
  [OCPP_CallAction.SecurityEventNotification]: OCPP2_1.SecurityEventNotificationRequestSchema,

  [OCPP_CallAction.SendLocalList]: OCPP2_1.SendLocalListRequestSchema,
  [OCPP_CallAction.SetChargingProfile]: OCPP2_1.SetChargingProfileRequestSchema,
  [OCPP_CallAction.SetDisplayMessage]: OCPP2_1.SetDisplayMessageRequestSchema,
  [OCPP_CallAction.SetMonitoringBase]: OCPP2_1.SetMonitoringBaseRequestSchema,
  [OCPP_CallAction.SetMonitoringLevel]: OCPP2_1.SetMonitoringLevelRequestSchema,
  [OCPP_CallAction.SetNetworkProfile]: OCPP2_1.SetNetworkProfileRequestSchema,
  [OCPP_CallAction.SetVariableMonitoring]: OCPP2_1.SetVariableMonitoringRequestSchema,
  [OCPP_CallAction.SetVariables]: OCPP2_1.SetVariablesRequestSchema,
  [OCPP_CallAction.SignCertificate]: OCPP2_1.SignCertificateRequestSchema,
  [OCPP_CallAction.StatusNotification]: OCPP2_1.StatusNotificationRequestSchema,
  [OCPP_CallAction.TransactionEvent]: OCPP2_1.TransactionEventRequestSchema,
  [OCPP_CallAction.TriggerMessage]: OCPP2_1.TriggerMessageRequestSchema,
  [OCPP_CallAction.UnlockConnector]: OCPP2_1.UnlockConnectorRequestSchema,
  [OCPP_CallAction.SetDefaultTariff]: OCPP2_1.SetDefaultTariffRequestSchema,
  [OCPP_CallAction.UnpublishFirmware]: OCPP2_1.UnpublishFirmwareRequestSchema,
  [OCPP_CallAction.UpdateFirmware]: OCPP2_1.UpdateFirmwareRequestSchema,
  [OCPP_CallAction.VatNumberValidation]: OCPP2_1.VatNumberValidationRequestSchema,
};

export const OCPP1_6_CALL_RESULT_SCHEMA_RECORD: Record<string, object> = {
  [OCPP_CallAction.Authorize]: OCPP1_6.AuthorizeResponseSchema,
  [OCPP_CallAction.BootNotification]: OCPP1_6.BootNotificationResponseSchema,
  [OCPP_CallAction.CancelReservation]: OCPP1_6.CancelReservationResponseSchema,
  [OCPP_CallAction.ChangeAvailability]: OCPP1_6.ChangeAvailabilityResponseSchema,
  [OCPP_CallAction.ChangeConfiguration]: OCPP1_6.ChangeConfigurationResponseSchema,
  [OCPP_CallAction.ClearCache]: OCPP1_6.ClearCacheResponseSchema,
  [OCPP_CallAction.ClearChargingProfile]: OCPP1_6.ClearChargingProfileResponseSchema,
  [OCPP_CallAction.DataTransfer]: OCPP1_6.DataTransferResponseSchema,
  [OCPP_CallAction.DiagnosticsStatusNotification]:
    OCPP1_6.DiagnosticsStatusNotificationResponseSchema,
  [OCPP_CallAction.FirmwareStatusNotification]: OCPP1_6.FirmwareStatusNotificationResponseSchema,
  [OCPP_CallAction.GetCompositeSchedule]: OCPP1_6.GetCompositeScheduleResponseSchema,
  [OCPP_CallAction.GetConfiguration]: OCPP1_6.GetConfigurationResponseSchema,
  [OCPP_CallAction.GetDiagnostics]: OCPP1_6.GetDiagnosticsResponseSchema,
  [OCPP_CallAction.GetLocalListVersion]: OCPP1_6.GetLocalListVersionResponseSchema,
  [OCPP_CallAction.Heartbeat]: OCPP1_6.HeartbeatResponseSchema,
  [OCPP_CallAction.MeterValues]: OCPP1_6.MeterValuesResponseSchema,
  [OCPP_CallAction.RemoteStartTransaction]: OCPP1_6.RemoteStartTransactionResponseSchema,
  [OCPP_CallAction.RemoteStopTransaction]: OCPP1_6.RemoteStopTransactionResponseSchema,
  [OCPP_CallAction.ReserveNow]: OCPP1_6.ReserveNowResponseSchema,
  [OCPP_CallAction.Reset]: OCPP1_6.ResetResponseSchema,
  [OCPP_CallAction.SendLocalList]: OCPP1_6.SendLocalListResponseSchema,
  [OCPP_CallAction.SetChargingProfile]: OCPP1_6.SetChargingProfileResponseSchema,
  [OCPP_CallAction.StartTransaction]: OCPP1_6.StartTransactionResponseSchema,
  [OCPP_CallAction.StatusNotification]: OCPP1_6.StatusNotificationResponseSchema,
  [OCPP_CallAction.StopTransaction]: OCPP1_6.StopTransactionResponseSchema,
  [OCPP_CallAction.TriggerMessage]: OCPP1_6.TriggerMessageResponseSchema,
  [OCPP_CallAction.UnlockConnector]: OCPP1_6.UnlockConnectorResponseSchema,
  [OCPP_CallAction.UpdateFirmware]: OCPP1_6.UpdateFirmwareResponseSchema,
};

// Action results supported by OCPP 2.0.1
export const OCPP2_0_1_CALL_RESULT_SCHEMA_RECORD: Record<string, object> = {
  [OCPP_CallAction.Authorize]: OCPP2_0_1.AuthorizeResponseSchema,
  [OCPP_CallAction.BootNotification]: OCPP2_0_1.BootNotificationResponseSchema,
  [OCPP_CallAction.CancelReservation]: OCPP2_0_1.CancelReservationResponseSchema,
  [OCPP_CallAction.CertificateSigned]: OCPP2_0_1.CertificateSignedResponseSchema,
  [OCPP_CallAction.ChangeAvailability]: OCPP2_0_1.ChangeAvailabilityResponseSchema,
  [OCPP_CallAction.ClearCache]: OCPP2_0_1.ClearCacheResponseSchema,
  [OCPP_CallAction.ClearChargingProfile]: OCPP2_0_1.ClearChargingProfileResponseSchema,
  [OCPP_CallAction.ClearDisplayMessage]: OCPP2_0_1.ClearDisplayMessageResponseSchema,
  [OCPP_CallAction.ClearedChargingLimit]: OCPP2_0_1.ClearedChargingLimitResponseSchema,
  [OCPP_CallAction.ClearVariableMonitoring]: OCPP2_0_1.ClearVariableMonitoringResponseSchema,
  [OCPP_CallAction.CostUpdated]: OCPP2_0_1.CostUpdatedResponseSchema,
  [OCPP_CallAction.CustomerInformation]: OCPP2_0_1.CustomerInformationResponseSchema,
  [OCPP_CallAction.DataTransfer]: OCPP2_0_1.DataTransferResponseSchema,
  [OCPP_CallAction.DeleteCertificate]: OCPP2_0_1.DeleteCertificateResponseSchema,
  [OCPP_CallAction.FirmwareStatusNotification]: OCPP2_0_1.FirmwareStatusNotificationResponseSchema,
  [OCPP_CallAction.Get15118EVCertificate]: OCPP2_0_1.Get15118EVCertificateResponseSchema,
  [OCPP_CallAction.GetBaseReport]: OCPP2_0_1.GetBaseReportResponseSchema,
  [OCPP_CallAction.GetCertificateStatus]: OCPP2_0_1.GetCertificateStatusResponseSchema,
  [OCPP_CallAction.GetChargingProfiles]: OCPP2_0_1.GetChargingProfilesResponseSchema,
  [OCPP_CallAction.GetCompositeSchedule]: OCPP2_0_1.GetCompositeScheduleResponseSchema,
  [OCPP_CallAction.GetDisplayMessages]: OCPP2_0_1.GetDisplayMessagesResponseSchema,
  [OCPP_CallAction.GetInstalledCertificateIds]: OCPP2_0_1.GetInstalledCertificateIdsResponseSchema,
  [OCPP_CallAction.GetLocalListVersion]: OCPP2_0_1.GetLocalListVersionResponseSchema,
  [OCPP_CallAction.GetLog]: OCPP2_0_1.GetLogResponseSchema,
  [OCPP_CallAction.GetMonitoringReport]: OCPP2_0_1.GetMonitoringReportResponseSchema,
  [OCPP_CallAction.GetReport]: OCPP2_0_1.GetReportResponseSchema,
  [OCPP_CallAction.GetTransactionStatus]: OCPP2_0_1.GetTransactionStatusResponseSchema,
  [OCPP_CallAction.GetVariables]: OCPP2_0_1.GetVariablesResponseSchema,
  [OCPP_CallAction.Heartbeat]: OCPP2_0_1.HeartbeatResponseSchema,
  [OCPP_CallAction.InstallCertificate]: OCPP2_0_1.InstallCertificateResponseSchema,
  [OCPP_CallAction.LogStatusNotification]: OCPP2_0_1.LogStatusNotificationResponseSchema,
  [OCPP_CallAction.MeterValues]: OCPP2_0_1.MeterValuesResponseSchema,
  [OCPP_CallAction.NotifyChargingLimit]: OCPP2_0_1.NotifyChargingLimitResponseSchema,
  [OCPP_CallAction.NotifyCustomerInformation]: OCPP2_0_1.NotifyCustomerInformationResponseSchema,
  [OCPP_CallAction.NotifyDisplayMessages]: OCPP2_0_1.NotifyDisplayMessagesResponseSchema,
  [OCPP_CallAction.NotifyEVChargingNeeds]: OCPP2_0_1.NotifyEVChargingNeedsResponseSchema,
  [OCPP_CallAction.NotifyEVChargingSchedule]: OCPP2_0_1.NotifyEVChargingScheduleResponseSchema,
  [OCPP_CallAction.NotifyEvent]: OCPP2_0_1.NotifyEventResponseSchema,
  [OCPP_CallAction.NotifyMonitoringReport]: OCPP2_0_1.NotifyMonitoringReportResponseSchema,
  [OCPP_CallAction.NotifyReport]: OCPP2_0_1.NotifyReportResponseSchema,
  [OCPP_CallAction.PublishFirmware]: OCPP2_0_1.PublishFirmwareResponseSchema,
  [OCPP_CallAction.PublishFirmwareStatusNotification]:
    OCPP2_0_1.PublishFirmwareStatusNotificationResponseSchema,
  [OCPP_CallAction.ReportChargingProfiles]: OCPP2_0_1.ReportChargingProfilesResponseSchema,
  [OCPP_CallAction.RequestStartTransaction]: OCPP2_0_1.RequestStartTransactionResponseSchema,
  [OCPP_CallAction.RequestStopTransaction]: OCPP2_0_1.RequestStopTransactionResponseSchema,
  [OCPP_CallAction.ReservationStatusUpdate]: OCPP2_0_1.ReservationStatusUpdateResponseSchema,
  [OCPP_CallAction.ReserveNow]: OCPP2_0_1.ReserveNowResponseSchema,
  [OCPP_CallAction.Reset]: OCPP2_0_1.ResetResponseSchema,
  [OCPP_CallAction.SecurityEventNotification]: OCPP2_0_1.SecurityEventNotificationResponseSchema,
  [OCPP_CallAction.SendLocalList]: OCPP2_0_1.SendLocalListResponseSchema,
  [OCPP_CallAction.SetChargingProfile]: OCPP2_0_1.SetChargingProfileResponseSchema,
  [OCPP_CallAction.SetDisplayMessage]: OCPP2_0_1.SetDisplayMessageResponseSchema,
  [OCPP_CallAction.SetMonitoringBase]: OCPP2_0_1.SetMonitoringBaseResponseSchema,
  [OCPP_CallAction.SetMonitoringLevel]: OCPP2_0_1.SetMonitoringLevelResponseSchema,
  [OCPP_CallAction.SetNetworkProfile]: OCPP2_0_1.SetNetworkProfileResponseSchema,
  [OCPP_CallAction.SetVariableMonitoring]: OCPP2_0_1.SetVariableMonitoringResponseSchema,
  [OCPP_CallAction.SetVariables]: OCPP2_0_1.SetVariablesResponseSchema,
  [OCPP_CallAction.SignCertificate]: OCPP2_0_1.SignCertificateResponseSchema,
  [OCPP_CallAction.StatusNotification]: OCPP2_0_1.StatusNotificationResponseSchema,
  [OCPP_CallAction.TransactionEvent]: OCPP2_0_1.TransactionEventResponseSchema,
  [OCPP_CallAction.TriggerMessage]: OCPP2_0_1.TriggerMessageResponseSchema,
  [OCPP_CallAction.UnlockConnector]: OCPP2_0_1.UnlockConnectorResponseSchema,
  [OCPP_CallAction.UnpublishFirmware]: OCPP2_0_1.UnpublishFirmwareResponseSchema,
  [OCPP_CallAction.UpdateFirmware]: OCPP2_0_1.UpdateFirmwareResponseSchema,
};

// Action results supported by OCPP 2.1
// TODO: Add new action results for OCPP 2.1 once they are implemented
export const OCPP2_1_CALL_RESULT_SCHEMA_RECORD: Record<string, object> = {
  [OCPP_CallAction.Authorize]: OCPP2_1.AuthorizeResponseSchema,
  [OCPP_CallAction.BootNotification]: OCPP2_1.BootNotificationResponseSchema,
  [OCPP_CallAction.CancelReservation]: OCPP2_1.CancelReservationResponseSchema,
  [OCPP_CallAction.CertificateSigned]: OCPP2_1.CertificateSignedResponseSchema,
  [OCPP_CallAction.ChangeAvailability]: OCPP2_1.ChangeAvailabilityResponseSchema,
  [OCPP_CallAction.ClearCache]: OCPP2_1.ClearCacheResponseSchema,
  [OCPP_CallAction.ClearChargingProfile]: OCPP2_1.ClearChargingProfileResponseSchema,
  [OCPP_CallAction.ClearDisplayMessage]: OCPP2_1.ClearDisplayMessageResponseSchema,
  [OCPP_CallAction.ClearedChargingLimit]: OCPP2_1.ClearedChargingLimitResponseSchema,
  [OCPP_CallAction.ClearVariableMonitoring]: OCPP2_1.ClearVariableMonitoringResponseSchema,
  [OCPP_CallAction.CostUpdated]: OCPP2_1.CostUpdatedResponseSchema,
  [OCPP_CallAction.CustomerInformation]: OCPP2_1.CustomerInformationResponseSchema,
  [OCPP_CallAction.DataTransfer]: OCPP2_1.DataTransferResponseSchema,
  [OCPP_CallAction.DeleteCertificate]: OCPP2_1.DeleteCertificateResponseSchema,
  [OCPP_CallAction.FirmwareStatusNotification]: OCPP2_1.FirmwareStatusNotificationResponseSchema,
  [OCPP_CallAction.Get15118EVCertificate]: OCPP2_1.Get15118EVCertificateResponseSchema,
  [OCPP_CallAction.GetBaseReport]: OCPP2_1.GetBaseReportResponseSchema,
  [OCPP_CallAction.GetCertificateStatus]: OCPP2_1.GetCertificateStatusResponseSchema,
  [OCPP_CallAction.GetChargingProfiles]: OCPP2_1.GetChargingProfilesResponseSchema,
  [OCPP_CallAction.GetCompositeSchedule]: OCPP2_1.GetCompositeScheduleResponseSchema,
  [OCPP_CallAction.GetDisplayMessages]: OCPP2_1.GetDisplayMessagesResponseSchema,
  [OCPP_CallAction.GetInstalledCertificateIds]: OCPP2_1.GetInstalledCertificateIdsResponseSchema,
  [OCPP_CallAction.GetLocalListVersion]: OCPP2_1.GetLocalListVersionResponseSchema,
  [OCPP_CallAction.GetLog]: OCPP2_1.GetLogResponseSchema,
  [OCPP_CallAction.GetMonitoringReport]: OCPP2_1.GetMonitoringReportResponseSchema,
  [OCPP_CallAction.GetReport]: OCPP2_1.GetReportResponseSchema,
  [OCPP_CallAction.GetTransactionStatus]: OCPP2_1.GetTransactionStatusResponseSchema,
  [OCPP_CallAction.GetVariables]: OCPP2_1.GetVariablesResponseSchema,
  [OCPP_CallAction.Heartbeat]: OCPP2_1.HeartbeatResponseSchema,
  [OCPP_CallAction.InstallCertificate]: OCPP2_1.InstallCertificateResponseSchema,
  [OCPP_CallAction.LogStatusNotification]: OCPP2_1.LogStatusNotificationResponseSchema,
  [OCPP_CallAction.MeterValues]: OCPP2_1.MeterValuesResponseSchema,
  [OCPP_CallAction.NotifyChargingLimit]: OCPP2_1.NotifyChargingLimitResponseSchema,
  [OCPP_CallAction.NotifyCustomerInformation]: OCPP2_1.NotifyCustomerInformationResponseSchema,
  [OCPP_CallAction.NotifyDisplayMessages]: OCPP2_1.NotifyDisplayMessagesResponseSchema,
  [OCPP_CallAction.NotifyEVChargingNeeds]: OCPP2_1.NotifyEVChargingNeedsResponseSchema,
  [OCPP_CallAction.NotifyEVChargingSchedule]: OCPP2_1.NotifyEVChargingScheduleResponseSchema,
  [OCPP_CallAction.NotifyEvent]: OCPP2_1.NotifyEventResponseSchema,
  [OCPP_CallAction.NotifyMonitoringReport]: OCPP2_1.NotifyMonitoringReportResponseSchema,
  [OCPP_CallAction.NotifyReport]: OCPP2_1.NotifyReportResponseSchema,
  [OCPP_CallAction.NotifySettlement]: OCPP2_1.NotifySettlementResponseSchema,
  [OCPP_CallAction.PublishFirmware]: OCPP2_1.PublishFirmwareResponseSchema,
  [OCPP_CallAction.PublishFirmwareStatusNotification]:
    OCPP2_1.PublishFirmwareStatusNotificationResponseSchema,
  [OCPP_CallAction.ReportChargingProfiles]: OCPP2_1.ReportChargingProfilesResponseSchema,
  [OCPP_CallAction.RequestStartTransaction]: OCPP2_1.RequestStartTransactionResponseSchema,
  [OCPP_CallAction.RequestStopTransaction]: OCPP2_1.RequestStopTransactionResponseSchema,
  [OCPP_CallAction.ReservationStatusUpdate]: OCPP2_1.ReservationStatusUpdateResponseSchema,
  [OCPP_CallAction.ReserveNow]: OCPP2_1.ReserveNowResponseSchema,
  [OCPP_CallAction.Reset]: OCPP2_1.ResetResponseSchema,
  [OCPP_CallAction.SecurityEventNotification]: OCPP2_1.SecurityEventNotificationResponseSchema,
  [OCPP_CallAction.SendLocalList]: OCPP2_1.SendLocalListResponseSchema,
  [OCPP_CallAction.SetChargingProfile]: OCPP2_1.SetChargingProfileResponseSchema,
  [OCPP_CallAction.SetDisplayMessage]: OCPP2_1.SetDisplayMessageResponseSchema,
  [OCPP_CallAction.SetMonitoringBase]: OCPP2_1.SetMonitoringBaseResponseSchema,
  [OCPP_CallAction.SetMonitoringLevel]: OCPP2_1.SetMonitoringLevelResponseSchema,
  [OCPP_CallAction.SetNetworkProfile]: OCPP2_1.SetNetworkProfileResponseSchema,
  [OCPP_CallAction.SetVariableMonitoring]: OCPP2_1.SetVariableMonitoringResponseSchema,
  [OCPP_CallAction.SetVariables]: OCPP2_1.SetVariablesResponseSchema,
  [OCPP_CallAction.SignCertificate]: OCPP2_1.SignCertificateResponseSchema,
  [OCPP_CallAction.StatusNotification]: OCPP2_1.StatusNotificationResponseSchema,
  [OCPP_CallAction.TransactionEvent]: OCPP2_1.TransactionEventResponseSchema,
  [OCPP_CallAction.TriggerMessage]: OCPP2_1.TriggerMessageResponseSchema,
  [OCPP_CallAction.UnlockConnector]: OCPP2_1.UnlockConnectorResponseSchema,
  [OCPP_CallAction.SetDefaultTariff]: OCPP2_1.SetDefaultTariffResponseSchema,
  [OCPP_CallAction.UnpublishFirmware]: OCPP2_1.UnpublishFirmwareResponseSchema,
  [OCPP_CallAction.UpdateFirmware]: OCPP2_1.UpdateFirmwareResponseSchema,
  [OCPP_CallAction.VatNumberValidation]: OCPP2_1.VatNumberValidationResponseSchema,
};
