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

/**
 * This file was automatically generated by json-schema-to-typescript.
 * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
 * and run json-schema-to-typescript to regenerate this file.
 */

import {
  ControlModeEnumType,
  DERControlEnumType,
  EnergyTransferModeEnumType,
  IslandingDetectionEnumType,
  MobilityNeedsModeEnumType,
} from '../enums/index.js';
import type { OcppRequest } from '../../../internal-types.js';

export interface NotifyEVChargingNeedsRequest extends OcppRequest {
  /**
   * Defines the EVSE and connector to which the EV is connected. EvseId may not be 0.
   *
   */
  evseId: number;
  /**
   * Contains the maximum elements the EV supports for: +
   * - ISO 15118-2: schedule tuples in SASchedule (both Pmax and Tariff). +
   * - ISO 15118-20: PowerScheduleEntry, PriceRule and PriceLevelScheduleEntries.
   *
   */
  maxScheduleTuples?: number | null;
  chargingNeeds: ChargingNeedsType;
  /**
   * *(2.1)* Time when EV charging needs were received. +
   * Field can be added when charging station was offline when charging needs were received.
   *
   *
   */
  timestamp?: string | null;
  customData?: CustomDataType | null;
}
export interface ChargingNeedsType {
  acChargingParameters?: ACChargingParametersType | null;
  derChargingParameters?: DERChargingParametersType | null;
  evEnergyOffer?: EVEnergyOfferType | null;
  requestedEnergyTransfer: EnergyTransferModeEnumType;
  dcChargingParameters?: DCChargingParametersType | null;
  v2xChargingParameters?: V2XChargingParametersType | null;
  /**
   * *(2.1)* Modes of energy transfer that are marked as available by EV.
   *
   *
   * @minItems 1
   */
  availableEnergyTransfer?: [EnergyTransferModeEnumType, ...EnergyTransferModeEnumType[]] | null;
  controlMode?: ControlModeEnumType | null;
  mobilityNeedsMode?: MobilityNeedsModeEnumType | null;
  /**
   * Estimated departure time of the EV. +
   * *ISO 15118-2:* AC/DC_EVChargeParameterType: DepartureTime +
   * *ISO 15118-20:* Dynamic/Scheduled_SEReqControlModeType: DepartureTIme
   *
   */
  departureTime?: string | null;
  customData?: CustomDataType | null;
}
/**
 * EV AC charging parameters for ISO 15118-2
 *
 *
 */
export interface ACChargingParametersType {
  /**
   * Amount of energy requested (in Wh). This includes energy required for preconditioning.
   * Relates to: +
   * *ISO 15118-2*: AC_EVChargeParameterType: EAmount +
   * *ISO 15118-20*: Dynamic/Scheduled_SEReqControlModeType: EVTargetEnergyRequest
   *
   *
   */
  energyAmount: number;
  /**
   * Minimum current (amps) supported by the electric vehicle (per phase).
   * Relates to: +
   * *ISO 15118-2*: AC_EVChargeParameterType: EVMinCurrent
   *
   *
   */
  evMinCurrent: number;
  /**
   * Maximum current (amps) supported by the electric vehicle (per phase). Includes cable capacity.
   * Relates to: +
   * *ISO 15118-2*: AC_EVChargeParameterType: EVMaxCurrent
   *
   *
   */
  evMaxCurrent: number;
  /**
   * Maximum voltage supported by the electric vehicle.
   * Relates to: +
   * *ISO 15118-2*: AC_EVChargeParameterType: EVMaxVoltage
   *
   *
   */
  evMaxVoltage: number;
  customData?: CustomDataType | null;
}
/**
 * This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.
 */
export interface CustomDataType {
  vendorId: string;
  [k: string]: unknown;
}
/**
 * *(2.1)* DERChargingParametersType is used in ChargingNeedsType during an ISO 15118-20 session for AC_BPT_DER to report the inverter settings related to DER control that were agreed between EVSE and EV.
 *
 * Fields starting with "ev" contain values from the EV.
 * Other fields contain a value that is supported by both EV and EVSE.
 *
 * DERChargingParametersType type is only relevant in case of an ISO 15118-20 AC_BPT_DER/AC_DER charging session.
 *
 * NOTE: All these fields have values greater or equal to zero (i.e. are non-negative)
 *
 *
 */
export interface DERChargingParametersType {
  /**
   * DER control functions supported by EV. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType:DERControlFunctions (bitmap)
   *
   *
   * @minItems 1
   */
  evSupportedDERControl?: [DERControlEnumType, ...DERControlEnumType[]] | null;
  /**
   * Rated maximum injected active power by EV, at specified over-excited power factor (overExcitedPowerFactor). +
   * It can also be defined as the rated maximum discharge power at the rated minimum injected reactive power value. This means that if the EV is providing reactive power support, and it is requested to discharge at max power (e.g. to satisfy an EMS request), the EV may override the request and discharge up to overExcitedMaximumDischargePower to meet the minimum reactive power requirements. +
   * Corresponds to the WOvPF attribute in IEC 61850. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVOverExcitedMaximumDischargePower
   *
   */
  evOverExcitedMaxDischargePower?: number | null;
  /**
   * EV power factor when injecting (over excited) the minimum reactive power. +
   * Corresponds to the OvPF attribute in IEC 61850. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVOverExcitedPowerFactor
   *
   */
  evOverExcitedPowerFactor?: number | null;
  /**
   * Rated maximum injected active power by EV supported at specified under-excited power factor (EVUnderExcitedPowerFactor). +
   * It can also be defined as the rated maximum dischargePower at the rated minimum absorbed reactive power value.
   * This means that if the EV is providing reactive power support, and it is requested to discharge at max power (e.g. to satisfy an EMS request), the EV may override the request and discharge up to underExcitedMaximumDischargePower to meet the minimum reactive power requirements. +
   * This corresponds to the WUnPF attribute in the IEC 61850. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVUnderExcitedMaximumDischargePower
   *
   */
  evUnderExcitedMaxDischargePower?: number | null;
  /**
   * EV power factor when injecting (under excited) the minimum reactive power. +
   * Corresponds to the OvPF attribute in IEC 61850. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVUnderExcitedPowerFactor
   *
   */
  evUnderExcitedPowerFactor?: number | null;
  /**
   * Rated maximum total apparent power, defined by min(EV, EVSE) in va.
   * Corresponds to the VAMaxRtg in IEC 61850. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMaximumApparentPower
   *
   */
  maxApparentPower?: number | null;
  /**
   * Rated maximum absorbed apparent power, defined by min(EV, EVSE) in va. +
   *     This field represents the sum of all phases, unless values are provided for L2 and L3,
   *     in which case this field represents phase L1. +
   *     Corresponds to the ChaVAMaxRtg in IEC 61850. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMaximumChargeApparentPower
   *
   */
  maxChargeApparentPower?: number | null;
  /**
   * Rated maximum absorbed apparent power on phase L2, defined by min(EV, EVSE) in va.
   * Corresponds to the ChaVAMaxRtg in IEC 61850. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMaximumChargeApparentPower_L2
   *
   */
  maxChargeApparentPower_L2?: number | null;
  /**
   * Rated maximum absorbed apparent power on phase L3, defined by min(EV, EVSE) in va.
   * Corresponds to the ChaVAMaxRtg in IEC 61850. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMaximumChargeApparentPower_L3
   *
   */
  maxChargeApparentPower_L3?: number | null;
  /**
   * Rated maximum injected apparent power, defined by min(EV, EVSE) in va. +
   *     This field represents the sum of all phases, unless values are provided for L2 and L3,
   *     in which case this field represents phase L1. +
   *     Corresponds to the DisVAMaxRtg in IEC 61850. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMaximumDischargeApparentPower
   *
   */
  maxDischargeApparentPower?: number | null;
  /**
   * Rated maximum injected apparent power on phase L2, defined by min(EV, EVSE) in va. +
   *     Corresponds to the DisVAMaxRtg in IEC 61850. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMaximumDischargeApparentPower_L2
   *
   */
  maxDischargeApparentPower_L2?: number | null;
  /**
   * Rated maximum injected apparent power on phase L3, defined by min(EV, EVSE) in va. +
   *     Corresponds to the DisVAMaxRtg in IEC 61850. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMaximumDischargeApparentPower_L3
   *
   */
  maxDischargeApparentPower_L3?: number | null;
  /**
   * Rated maximum absorbed reactive power, defined by min(EV, EVSE), in vars. +
   *     This field represents the sum of all phases, unless values are provided for L2 and L3,
   *     in which case this field represents phase L1. +
   * Corresponds to the AvarMax attribute in the IEC 61850. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMaximumChargeReactivePower
   *
   */
  maxChargeReactivePower?: number | null;
  /**
   * Rated maximum absorbed reactive power, defined by min(EV, EVSE), in vars on phase L2. +
   * Corresponds to the AvarMax attribute in the IEC 61850. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMaximumChargeReactivePower_L2
   *
   */
  maxChargeReactivePower_L2?: number | null;
  /**
   * Rated maximum absorbed reactive power, defined by min(EV, EVSE), in vars on phase L3. +
   * Corresponds to the AvarMax attribute in the IEC 61850. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMaximumChargeReactivePower_L3
   *
   */
  maxChargeReactivePower_L3?: number | null;
  /**
   * Rated minimum absorbed reactive power, defined by max(EV, EVSE), in vars. +
   *     This field represents the sum of all phases, unless values are provided for L2 and L3,
   *     in which case this field represents phase L1. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMinimumChargeReactivePower
   *
   */
  minChargeReactivePower?: number | null;
  /**
   * Rated minimum absorbed reactive power, defined by max(EV, EVSE), in vars on phase L2. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMinimumChargeReactivePower_L2
   *
   */
  minChargeReactivePower_L2?: number | null;
  /**
   * Rated minimum absorbed reactive power, defined by max(EV, EVSE), in vars on phase L3. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMinimumChargeReactivePower_L3
   *
   */
  minChargeReactivePower_L3?: number | null;
  /**
   * Rated maximum injected reactive power, defined by min(EV, EVSE), in vars. +
   *     This field represents the sum of all phases, unless values are provided for L2 and L3,
   *     in which case this field represents phase L1. +
   * Corresponds to the IvarMax attribute in the IEC 61850. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMaximumDischargeReactivePower
   *
   */
  maxDischargeReactivePower?: number | null;
  /**
   * Rated maximum injected reactive power, defined by min(EV, EVSE), in vars on phase L2. +
   * Corresponds to the IvarMax attribute in the IEC 61850. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMaximumDischargeReactivePower_L2
   *
   */
  maxDischargeReactivePower_L2?: number | null;
  /**
   * Rated maximum injected reactive power, defined by min(EV, EVSE), in vars on phase L3. +
   * Corresponds to the IvarMax attribute in the IEC 61850. +
   *     *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMaximumDischargeReactivePower_L3
   *
   */
  maxDischargeReactivePower_L3?: number | null;
  /**
   * Rated minimum injected reactive power, defined by max(EV, EVSE), in vars. +
   *     This field represents the sum of all phases, unless values are provided for L2 and L3,
   *     in which case this field represents phase L1. +
   *         *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMinimumDischargeReactivePower
   *
   */
  minDischargeReactivePower?: number | null;
  /**
   * Rated minimum injected reactive power, defined by max(EV, EVSE), in var on phase L2. +
   *         *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMinimumDischargeReactivePower_L2
   *
   */
  minDischargeReactivePower_L2?: number | null;
  /**
   * Rated minimum injected reactive power, defined by max(EV, EVSE), in var on phase L3. +
   *         *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMinimumDischargeReactivePower_L3
   *
   */
  minDischargeReactivePower_L3?: number | null;
  /**
   * Line voltage supported by EVSE and EV.
   *         *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVNominalVoltage
   *
   */
  nominalVoltage?: number | null;
  /**
   * The nominal AC voltage (rms) offset between the Charging Station's electrical connection point and the utility’s point of common coupling. +
   *         *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVNominalVoltageOffset
   *
   */
  nominalVoltageOffset?: number | null;
  /**
   * Maximum AC rms voltage, as defined by min(EV, EVSE)  to operate with. +
   *        *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMaximumNominalVoltage
   *
   */
  maxNominalVoltage?: number | null;
  /**
   * Minimum AC rms voltage, as defined by max(EV, EVSE)  to operate with. +
   *        *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMinimumNominalVoltage
   *
   */
  minNominalVoltage?: number | null;
  /**
   * Manufacturer of the EV inverter. +
   *        *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVInverterManufacturer
   *
   */
  evInverterManufacturer?: string | null;
  /**
   * Model name of the EV inverter. +
   *        *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVInverterModel
   *
   */
  evInverterModel?: string | null;
  /**
   * Serial number of the EV inverter. +
   *        *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVInverterSerialNumber
   *
   */
  evInverterSerialNumber?: string | null;
  /**
   * Software version of EV inverter. +
   *        *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVInverterSwVersion
   *
   */
  evInverterSwVersion?: string | null;
  /**
   * Hardware version of EV inverter. +
   *        *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVInverterHwVersion
   *
   */
  evInverterHwVersion?: string | null;
  /**
   * Type of islanding detection method. Only mandatory when islanding detection is required at the site, as set in the ISO 15118 Service Details configuration. +
   *        *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVIslandingDetectionMethod
   *
   *
   * @minItems 1
   */
  evIslandingDetectionMethod?: [IslandingDetectionEnumType, ...IslandingDetectionEnumType[]] | null;
  /**
   * Time after which EV will trip if an island has been detected. +
   *        *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVIslandingTripTime
   *
   */
  evIslandingTripTime?: number | null;
  /**
   * Maximum injected DC current allowed at level 1 charging. +
   *        *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMaximumLevel1DCInjection
   *
   */
  evMaximumLevel1DCInjection?: number | null;
  /**
   * Maximum allowed duration of DC injection at level 1 charging. +
   *        *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVDurationLevel1DCInjection
   *
   */
  evDurationLevel1DCInjection?: number | null;
  /**
   * Maximum injected DC current allowed at level 2 charging. +
   *        *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVMaximumLevel2DCInjection
   *
   */
  evMaximumLevel2DCInjection?: number | null;
  /**
   * Maximum allowed duration of DC injection at level 2 charging. +
   *        *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVDurationLevel2DCInjection
   *
   */
  evDurationLevel2DCInjection?: number | null;
  /**
   * 	Measure of the susceptibility of the circuit to reactance, in Siemens (S). +
   *        *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVReactiveSusceptance
   *
   *
   *
   */
  evReactiveSusceptance?: number | null;
  /**
   * Total energy value, in Wh, that EV is allowed to provide during the entire V2G session. The value is independent of the V2X Cycling area. Once this value reaches the value of 0, the EV may block any attempt to discharge in order to protect the battery health.
   *        *ISO 15118-20*: DER_BPT_AC_CPDReqEnergyTransferModeType: EVSessionTotalDischargeEnergyAvailable
   *
   *
   *
   */
  evSessionTotalDischargeEnergyAvailable?: number | null;
  customData?: CustomDataType | null;
}
/**
 * *(2.1)* A schedule of the energy amount over time that EV is willing to discharge. A negative value indicates the willingness to discharge under specific conditions, a positive value indicates that the EV currently is not able to offer energy to discharge.
 *
 */
export interface EVEnergyOfferType {
  evAbsolutePriceSchedule?: EVAbsolutePriceScheduleType | null;
  evPowerSchedule: EVPowerScheduleType;
  customData?: CustomDataType | null;
}
/**
 * *(2.1)* Price schedule of EV energy offer.
 *
 */
export interface EVAbsolutePriceScheduleType {
  /**
   * Starting point in time of the EVEnergyOffer.
   *
   */
  timeAnchor: string;
  /**
   * Currency code according to ISO 4217.
   *
   */
  currency: string;
  /**
   * @minItems 1
   * @maxItems 1024
   */
  evAbsolutePriceScheduleEntries: [
    EVAbsolutePriceScheduleEntryType,
    ...EVAbsolutePriceScheduleEntryType[],
  ];
  /**
   * ISO 15118-20 URN of price algorithm: Power, PeakPower, StackedEnergy.
   *
   */
  priceAlgorithm: string;
  customData?: CustomDataType | null;
}
/**
 * *(2.1)* An entry in price schedule over time for which EV is willing to discharge.
 *
 */
export interface EVAbsolutePriceScheduleEntryType {
  /**
   * The amount of seconds of this entry.
   *
   */
  duration: number;
  /**
   * @minItems 1
   * @maxItems 8
   */
  evPriceRule:
    | [EVPriceRuleType]
    | [EVPriceRuleType, EVPriceRuleType]
    | [EVPriceRuleType, EVPriceRuleType, EVPriceRuleType]
    | [EVPriceRuleType, EVPriceRuleType, EVPriceRuleType, EVPriceRuleType]
    | [EVPriceRuleType, EVPriceRuleType, EVPriceRuleType, EVPriceRuleType, EVPriceRuleType]
    | [
        EVPriceRuleType,
        EVPriceRuleType,
        EVPriceRuleType,
        EVPriceRuleType,
        EVPriceRuleType,
        EVPriceRuleType,
      ]
    | [
        EVPriceRuleType,
        EVPriceRuleType,
        EVPriceRuleType,
        EVPriceRuleType,
        EVPriceRuleType,
        EVPriceRuleType,
        EVPriceRuleType,
      ]
    | [
        EVPriceRuleType,
        EVPriceRuleType,
        EVPriceRuleType,
        EVPriceRuleType,
        EVPriceRuleType,
        EVPriceRuleType,
        EVPriceRuleType,
        EVPriceRuleType,
      ];
  customData?: CustomDataType | null;
}
/**
 * *(2.1)* An entry in price schedule over time for which EV is willing to discharge.
 *
 */
export interface EVPriceRuleType {
  /**
   * Cost per kWh.
   *
   */
  energyFee: number;
  /**
   * The EnergyFee applies between this value and the value of the PowerRangeStart of the subsequent EVPriceRule. If the power is below this value, the EnergyFee of the previous EVPriceRule applies. Negative values are used for discharging.
   *
   */
  powerRangeStart: number;
  customData?: CustomDataType | null;
}
/**
 * *(2.1)* Schedule of EV energy offer.
 *
 */
export interface EVPowerScheduleType {
  /**
   * @minItems 1
   * @maxItems 1024
   */
  evPowerScheduleEntries: [EVPowerScheduleEntryType, ...EVPowerScheduleEntryType[]];
  /**
   * The time that defines the starting point for the EVEnergyOffer.
   *
   */
  timeAnchor: string;
  customData?: CustomDataType | null;
}
/**
 * *(2.1)* An entry in schedule of the energy amount over time that EV is willing to discharge. A negative value indicates the willingness to discharge under specific conditions, a positive value indicates that the EV currently is not able to offer energy to discharge.
 *
 */
export interface EVPowerScheduleEntryType {
  /**
   * The duration of this entry.
   *
   */
  duration: number;
  /**
   * Defines maximum amount of power for the duration of this EVPowerScheduleEntry to be discharged from the EV battery through EVSE power outlet. Negative values are used for discharging.
   *
   */
  power: number;
  customData?: CustomDataType | null;
}
/**
 * EV DC charging parameters for ISO 15118-2
 *
 */
export interface DCChargingParametersType {
  /**
   * Maximum current (in A) supported by the electric vehicle. Includes cable capacity.
   * Relates to: +
   * *ISO 15118-2*: DC_EVChargeParameterType:EVMaximumCurrentLimit
   *
   */
  evMaxCurrent: number;
  /**
   * Maximum voltage supported by the electric vehicle.
   * Relates to: +
   * *ISO 15118-2*: DC_EVChargeParameterType: EVMaximumVoltageLimit
   *
   *
   */
  evMaxVoltage: number;
  /**
   * Maximum power (in W) supported by the electric vehicle. Required for DC charging.
   * Relates to: +
   * *ISO 15118-2*: DC_EVChargeParameterType: EVMaximumPowerLimit
   *
   *
   */
  evMaxPower?: number | null;
  /**
   * Capacity of the electric vehicle battery (in Wh).
   * Relates to: +
   * *ISO 15118-2*: DC_EVChargeParameterType: EVEnergyCapacity
   *
   *
   */
  evEnergyCapacity?: number | null;
  /**
   * Amount of energy requested (in Wh). This inludes energy required for preconditioning.
   * Relates to: +
   * *ISO 15118-2*: DC_EVChargeParameterType: EVEnergyRequest
   *
   *
   *
   */
  energyAmount?: number | null;
  /**
   * Energy available in the battery (in percent of the battery capacity)
   * Relates to: +
   * *ISO 15118-2*: DC_EVChargeParameterType: DC_EVStatus: EVRESSSOC
   *
   *
   */
  stateOfCharge?: number | null;
  /**
   * Percentage of SoC at which the EV considers the battery fully charged. (possible values: 0 - 100)
   * Relates to: +
   * *ISO 15118-2*: DC_EVChargeParameterType: FullSOC
   *
   *
   */
  fullSoC?: number | null;
  /**
   * Percentage of SoC at which the EV considers a fast charging process to end. (possible values: 0 - 100)
   * Relates to: +
   * *ISO 15118-2*: DC_EVChargeParameterType: BulkSOC
   *
   *
   */
  bulkSoC?: number | null;
  customData?: CustomDataType | null;
}
/**
 * Charging parameters for ISO 15118-20, also supporting V2X charging/discharging.+
 * All values are greater or equal to zero, with the exception of EVMinEnergyRequest, EVMaxEnergyRequest, EVTargetEnergyRequest, EVMinV2XEnergyRequest and EVMaxV2XEnergyRequest.
 *
 */
export interface V2XChargingParametersType {
  /**
   * Minimum charge power in W, defined by max(EV, EVSE).
   * This field represents the sum of all phases, unless values are provided for L2 and L3, in which case this field represents phase L1.
   * Relates to:
   * *ISO 15118-20*: BPT_AC/DC_CPDReqEnergyTransferModeType: EVMinimumChargePower
   *
   */
  minChargePower?: number | null;
  /**
   * Minimum charge power on phase L2 in W, defined by max(EV, EVSE).
   * Relates to:
   * *ISO 15118-20*: BPT_AC/DC_CPDReqEnergyTransferModeType: EVMinimumChargePower_L2
   *
   */
  minChargePower_L2?: number | null;
  /**
   * Minimum charge power on phase L3 in W, defined by max(EV, EVSE).
   * Relates to:
   * *ISO 15118-20*: BPT_AC/DC_CPDReqEnergyTransferModeType: EVMinimumChargePower_L3
   *
   */
  minChargePower_L3?: number | null;
  /**
   * Maximum charge (absorbed) power in W, defined by min(EV, EVSE) at unity power factor. +
   * This field represents the sum of all phases, unless values are provided for L2 and L3, in which case this field represents phase L1.
   * It corresponds to the ChaWMax attribute in the IEC 61850.
   * It is usually equivalent to the rated apparent power of the EV when discharging (ChaVAMax) in IEC 61850. +
   *
   * Relates to:
   * *ISO 15118-20*: BPT_AC/DC_CPDReqEnergyTransferModeType: EVMaximumChargePower
   *
   *
   */
  maxChargePower?: number | null;
  /**
   * Maximum charge power on phase L2 in W, defined by min(EV, EVSE)
   * Relates to:
   * *ISO 15118-20*: BPT_AC/DC_CPDReqEnergyTransferModeType: EVMaximumChargePower_L2
   *
   *
   *
   */
  maxChargePower_L2?: number | null;
  /**
   * Maximum charge power on phase L3 in W, defined by min(EV, EVSE)
   * Relates to:
   * *ISO 15118-20*: BPT_AC/DC_CPDReqEnergyTransferModeType: EVMaximumChargePower_L3
   *
   *
   *
   */
  maxChargePower_L3?: number | null;
  /**
   * Minimum discharge (injected) power in W, defined by max(EV, EVSE) at unity power factor. Value &gt;= 0. +
   * This field represents the sum of all phases, unless values are provided for L2 and L3, in which case this field represents phase L1. +
   * It corresponds to the WMax attribute in the IEC 61850.
   * It is usually equivalent to the rated apparent power of the EV when discharging (VAMax attribute in the IEC 61850).
   *
   * Relates to:
   * *ISO 15118-20*: BPT_AC/DC_CPDReqEnergyTransferModeType: EVMinimumDischargePower
   *
   *
   */
  minDischargePower?: number | null;
  /**
   * Minimum discharge power on phase L2 in W, defined by max(EV, EVSE).  Value &gt;= 0.
   * Relates to:
   * *ISO 15118-20*: BPT_AC/DC_CPDReqEnergyTransferModeType: EVMinimumDischargePower_L2
   *
   *
   */
  minDischargePower_L2?: number | null;
  /**
   * Minimum discharge power on phase L3 in W, defined by max(EV, EVSE).  Value &gt;= 0.
   * Relates to:
   * *ISO 15118-20*: BPT_AC/DC_CPDReqEnergyTransferModeType: EVMinimumDischargePower_L3
   *
   *
   */
  minDischargePower_L3?: number | null;
  /**
   * Maximum discharge (injected) power in W, defined by min(EV, EVSE) at unity power factor.  Value &gt;= 0.
   * This field represents the sum of all phases, unless values are provided for L2 and L3, in which case this field represents phase L1.
   * Relates to:
   * *ISO 15118-20*: BPT_AC/DC_CPDReqEnergyTransferModeType: EVMaximumDischargePower
   *
   *
   *
   */
  maxDischargePower?: number | null;
  /**
   * Maximum discharge power on phase L2 in W, defined by min(EV, EVSE).  Value &gt;= 0.
   * Relates to:
   * *ISO 15118-20*: BPT_AC/DC_CPDReqEnergyTransferModeType: EVMaximumDischargePowe_L2
   *
   *
   */
  maxDischargePower_L2?: number | null;
  /**
   * Maximum discharge power on phase L3 in W, defined by min(EV, EVSE).  Value &gt;= 0.
   * Relates to:
   * *ISO 15118-20*: BPT_AC/DC_CPDReqEnergyTransferModeType: EVMaximumDischargePower_L3
   *
   *
   */
  maxDischargePower_L3?: number | null;
  /**
   * Minimum charge current in A, defined by max(EV, EVSE)
   * Relates to:
   * *ISO 15118-20*: BPT_DC_CPDReqEnergyTransferModeType: EVMinimumChargeCurrent
   *
   *
   */
  minChargeCurrent?: number | null;
  /**
   * Maximum charge current in A, defined by min(EV, EVSE)
   * Relates to:
   * *ISO 15118-20*: BPT_DC_CPDReqEnergyTransferModeType: EVMaximumChargeCurrent
   *
   *
   *
   */
  maxChargeCurrent?: number | null;
  /**
   * Minimum discharge current in A, defined by max(EV, EVSE).  Value &gt;= 0.
   * Relates to:
   * *ISO 15118-20*: BPT_DC_CPDReqEnergyTransferModeType: EVMinimumDischargeCurrent
   *
   *
   *
   */
  minDischargeCurrent?: number | null;
  /**
   * Maximum discharge current in A, defined by min(EV, EVSE).  Value &gt;= 0.
   * Relates to:
   * *ISO 15118-20*: BPT_DC_CPDReqEnergyTransferModeType: EVMaximumDischargeCurrent
   *
   *
   */
  maxDischargeCurrent?: number | null;
  /**
   * Minimum voltage in V, defined by max(EV, EVSE)
   * Relates to:
   * *ISO 15118-20*: BPT_DC_CPDReqEnergyTransferModeType: EVMinimumVoltage
   *
   *
   */
  minVoltage?: number | null;
  /**
   * Maximum voltage in V, defined by min(EV, EVSE)
   * Relates to:
   * *ISO 15118-20*: BPT_DC_CPDReqEnergyTransferModeType: EVMaximumVoltage
   *
   *
   */
  maxVoltage?: number | null;
  /**
   * Energy to requested state of charge in Wh
   * Relates to:
   * *ISO 15118-20*: Dynamic/Scheduled_SEReqControlModeType: EVTargetEnergyRequest
   *
   *
   */
  evTargetEnergyRequest?: number | null;
  /**
   * Energy to minimum allowed state of charge in Wh
   * Relates to:
   * *ISO 15118-20*: Dynamic/Scheduled_SEReqControlModeType: EVMinimumEnergyRequest
   *
   *
   */
  evMinEnergyRequest?: number | null;
  /**
   * Energy to maximum state of charge in Wh
   * Relates to:
   * *ISO 15118-20*: Dynamic/Scheduled_SEReqControlModeType: EVMaximumEnergyRequest
   *
   *
   */
  evMaxEnergyRequest?: number | null;
  /**
   * Energy (in Wh) to minimum state of charge for cycling (V2X) activity.
   * Positive value means that current state of charge is below V2X range.
   * Relates to:
   * *ISO 15118-20*: Dynamic_SEReqControlModeType: EVMinimumV2XEnergyRequest
   *
   *
   */
  evMinV2XEnergyRequest?: number | null;
  /**
   * Energy (in Wh) to maximum state of charge for cycling (V2X) activity.
   * Negative value indicates that current state of charge is above V2X range.
   * Relates to:
   * *ISO 15118-20*: Dynamic_SEReqControlModeType: EVMaximumV2XEnergyRequest
   *
   *
   *
   */
  evMaxV2XEnergyRequest?: number | null;
  /**
   * Target state of charge at departure as percentage.
   * Relates to:
   * *ISO 15118-20*: BPT_DC_CPDReqEnergyTransferModeType: TargetSOC
   *
   *
   */
  targetSoC?: number | null;
  customData?: CustomDataType | null;
}
