import type { IChargingStationCertificateAuthorityClient } from './interface.js';
import type { SystemConfig } from '@citrineos/base';
import { Client } from 'acme-client';
import type { ILogObj } from 'tslog';
import { Logger } from 'tslog';
export declare class Acme implements IChargingStationCertificateAuthorityClient {
    private readonly _directoryUrl;
    private readonly _email;
    private readonly _preferredChain;
    private _securityCertChainKeyMap;
    private _client;
    private _logger;
    constructor(config: SystemConfig, logger?: Logger<ILogObj>, client?: Client);
    /**
     * Get LetsEncrypt Root CA certificate, ISRG Root X1.
     * @return {Promise<string>} The CA certificate pem.
     */
    getRootCACertificate(): Promise<string>;
    /**
     * Retrieves a signed certificate based on the provided CSR.
     * The returned certificate will be signed by Let's Encrypt, ISRG Root X1.
     * which is listed in https://ccadb.my.salesforce-sites.com/mozilla/CAAIdentifiersReport
     *
     * @param {string} csrString - The certificate signing request.
     * @return {Promise<string>} The signed certificate.
     */
    signCertificateByExternalCA(csrString: string): Promise<string>;
    /**
     * Get sub CA from the certificate chain.
     * Use it to sign certificate based on the CSR string.
     *
     * @param {string} csrString - The Certificate Signing Request (CSR) string.
     * @return {Promise<string>} - The signed certificate followed by sub CA in PEM format.
     */
    getCertificateChain(csrString: string): Promise<string>;
    updateCertificateChainKeyMap(serverId: string, certificateChain: string, privateKey: string): void;
}
