// 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 { CertificateActionEnumType } from '../enums/index.js';
import type { OcppRequest } from '../../../internal-types.js';

export interface Get15118EVCertificateRequest extends OcppRequest {
  /**
   * Schema version currently used for the 15118 session between EV and Charging Station. Needed for parsing of the EXI stream by the CSMS.
   *
   *
   */
  iso15118SchemaVersion: string;
  action: CertificateActionEnumType;
  /**
   * *(2.1)* Raw CertificateInstallationReq request from EV, Base64 encoded. +
   * Extended to support ISO 15118-20 certificates. The minimum supported length is 11000. If a longer _exiRequest_ is supported, then the supported length must be communicated in variable OCPPCommCtrlr.FieldLength[ "Get15118EVCertificateRequest.exiRequest" ].
   *
   */
  exiRequest: string;
  /**
   * *(2.1)* Absent during ISO 15118-2 session. Required during ISO 15118-20 session. +
   * Maximum number of contracts that EV wants to install.
   *
   */
  maximumContractCertificateChains?: number | null;
  /**
   * *(2.1)*  Absent during ISO 15118-2 session. Optional during ISO 15118-20 session. List of EMAIDs for which contract certificates must be requested first, in case there are more certificates than allowed by _maximumContractCertificateChains_.
   *
   *
   * @minItems 1
   * @maxItems 8
   */
  prioritizedEMAIDs?:
    | [string]
    | [string, string]
    | [string, string, string]
    | [string, string, string, string]
    | [string, string, string, string, string]
    | [string, string, string, string, string, string]
    | [string, string, string, string, string, string, string]
    | [string, string, string, string, string, string, string, string]
    | null;
  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;
}
