/* eslint-disable */
/**
 * 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.
 */

/**
 * Charging Station indicates if it can process the request.
 *
 */
export type GetInstalledCertificateStatusEnumType = "Accepted" | "NotFound";
/**
 * Used algorithms for the hashes provided.
 *
 */
export type HashAlgorithmEnumType = "SHA256" | "SHA384" | "SHA512";
/**
 * Indicates the type of the requested certificate(s).
 *
 */
export type GetCertificateIdUseEnumType =
  | "V2GRootCertificate"
  | "MORootCertificate"
  | "CSMSRootCertificate"
  | "V2GCertificateChain"
  | "ManufacturerRootCertificate";

export interface GetInstalledCertificateIdsResponse {
  customData?: CustomDataType;
  status: GetInstalledCertificateStatusEnumType;
  statusInfo?: StatusInfoType;
  /**
   * @minItems 1
   */
  certificateHashDataChain?: [CertificateHashDataChainType, ...CertificateHashDataChainType[]];
}
/**
 * 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;
}
/**
 * Element providing more information about the status.
 *
 */
export interface StatusInfoType {
  customData?: CustomDataType;
  /**
   * A predefined code for the reason why the status is returned in this response. The string is case-insensitive.
   *
   */
  reasonCode: string;
  /**
   * Additional text to provide detailed information.
   *
   */
  additionalInfo?: string;
}
export interface CertificateHashDataChainType {
  customData?: CustomDataType;
  certificateHashData: CertificateHashDataType;
  certificateType: GetCertificateIdUseEnumType;
  /**
   * @minItems 1
   * @maxItems 4
   */
  childCertificateHashData?:
    | [CertificateHashDataType]
    | [CertificateHashDataType, CertificateHashDataType]
    | [CertificateHashDataType, CertificateHashDataType, CertificateHashDataType]
    | [CertificateHashDataType, CertificateHashDataType, CertificateHashDataType, CertificateHashDataType];
}
export interface CertificateHashDataType {
  customData?: CustomDataType;
  hashAlgorithm: HashAlgorithmEnumType;
  /**
   * Hashed value of the Issuer DN (Distinguished Name).
   *
   *
   */
  issuerNameHash: string;
  /**
   * Hashed value of the issuers public key
   *
   */
  issuerKeyHash: string;
  /**
   * The serial number of the certificate.
   *
   */
  serialNumber: string;
}
