import { NetworkType } from 'symbol-sdk';
import { Logger } from '../logger';
import { CertificatePair } from '../model';
export interface CertificateParams {
    readonly target: string;
    readonly user?: string;
}
export interface CertificateMetadata {
    readonly transportPublicKey: string;
    readonly mainPublicKey: string;
    readonly version: number;
}
export interface NodeCertificates {
    main: CertificatePair;
    transport: CertificatePair;
}
export interface CertificateConfigPreset {
    networkType: NetworkType;
    symbolServerImage: string;
    caCertificateExpirationInDays: number;
    nodeCertificateExpirationInDays: number;
    certificateExpirationWarningInDays: number;
}
export declare class CertificateService {
    private readonly logger;
    protected readonly params: CertificateParams;
    static NODE_CERTIFICATE_FILE_NAME: string;
    static CA_CERTIFICATE_FILE_NAME: string;
    private static readonly METADATA_VERSION;
    private readonly runtimeService;
    constructor(logger: Logger, params: CertificateParams);
    run(presetData: CertificateConfigPreset, name: string, providedCertificates: NodeCertificates, renewIfRequired: boolean, customCertFolder?: string, randomSerial?: string): Promise<boolean>;
    private createCertificate;
    private shouldGenerateCertificate;
    private createCertCommands;
    willCertificateExpire(symbolServerImage: string, certFolder: string, certificateFileName: string, certificateExpirationWarningInDays: number): Promise<{
        willExpire: boolean;
        expirationDate: string;
    }>;
    private runOpenSslCommand;
    static getCertificates(stdout: string): CertificatePair[];
}
