import { OCPP2_0_1, SystemConfig } from '@citrineos/base';
import { IChargingStationCertificateAuthorityClient, IV2GCertificateAuthorityClient } from './client/interface';
import { ILogObj, Logger } from 'tslog';
export declare class CertificateAuthorityService {
    private readonly _v2gClient;
    private readonly _chargingStationClient;
    private readonly _logger;
    constructor(config: SystemConfig, logger?: Logger<ILogObj>, chargingStationClient?: IChargingStationCertificateAuthorityClient, v2gClient?: IV2GCertificateAuthorityClient);
    /**
     * Retrieves the certificate chain for V2G- and Charging Station certificates.
     *
     * @param {string} csrString - The Certificate Signing Request string.
     * @param {string} stationId - The station identifier.
     * @param {CertificateSigningUseEnumType} [certificateType] - The type of certificate to retrieve.
     * @return {Promise<string>} The certificate chain without the root certificate.
     */
    getCertificateChain(csrString: string, stationId: string, certificateType?: OCPP2_0_1.CertificateSigningUseEnumType | null): Promise<string>;
    signedSubCaCertificateByExternalCA(csrString: string): Promise<string>;
    getSignedContractData(iso15118SchemaVersion: string, exiRequest: string): Promise<string>;
    getRootCACertificateFromExternalCA(certificateType: OCPP2_0_1.InstallCertificateUseEnumType): Promise<string>;
    updateSecurityCertChainKeyMap(serverId: string, certificateChain: string, privateKey: string): void;
    validateCertificateChainPem(certificateChainPem: string): Promise<OCPP2_0_1.AuthorizeCertificateStatusEnumType>;
    validateCertificateHashData(ocspRequestData: OCPP2_0_1.OCSPRequestDataType[]): Promise<OCPP2_0_1.AuthorizeCertificateStatusEnumType>;
    /**
     * Create a certificate chain including leaf and sub CA certificates except for the root certificate.
     *
     * @param {string} signedCert - The leaf certificate.
     * @param {string} caCerts - CA certificates.
     * @return {string} The certificate chain pem.
     */
    private _createCertificateChainWithoutRootCA;
    private _instantiateV2GClient;
    private _instantiateChargingStationClient;
}
