// 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 {
  GetCertificateIdUseEnumType,
  GetInstalledCertificateStatusEnumType,
  HashAlgorithmEnumType,
} from '../enums/index.js';
import type { OcppResponse } from '../../../internal-types.js';

export interface GetInstalledCertificateIdsResponse extends OcppResponse {
  status: GetInstalledCertificateStatusEnumType;
  statusInfo?: StatusInfoType | null;
  /**
   * @minItems 1
   */
  certificateHashDataChain?:
    | [CertificateHashDataChainType, ...CertificateHashDataChainType[]]
    | null;
  customData?: CustomDataType | null;
}
/**
 * Element providing more information about the status.
 *
 */
export interface StatusInfoType {
  /**
   * 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 | 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;
}
export interface CertificateHashDataChainType {
  certificateHashData: CertificateHashDataType;
  certificateType: GetCertificateIdUseEnumType;
  /**
   * @minItems 1
   * @maxItems 4
   */
  childCertificateHashData?:
    | [CertificateHashDataType]
    | [CertificateHashDataType, CertificateHashDataType]
    | [CertificateHashDataType, CertificateHashDataType, CertificateHashDataType]
    | [
        CertificateHashDataType,
        CertificateHashDataType,
        CertificateHashDataType,
        CertificateHashDataType,
      ]
    | null;
  customData?: CustomDataType | null;
}
export interface CertificateHashDataType {
  hashAlgorithm: HashAlgorithmEnumType;
  /**
   * The hash of the issuer’s distinguished
   * name (DN), that must be calculated over the DER
   * encoding of the issuer’s name field in the certificate
   * being checked.
   *
   *
   */
  issuerNameHash: string;
  /**
   * The hash of the DER encoded public key:
   * the value (excluding tag and length) of the subject
   * public key field in the issuer’s certificate.
   *
   */
  issuerKeyHash: string;
  /**
   * The string representation of the
   * hexadecimal value of the serial number without the
   * prefix "0x" and without leading zeroes.
   *
   */
  serialNumber: string;
  customData?: CustomDataType | null;
}
