/// <reference types="node" />
export type TlsCertResult = {
    key: Buffer;
    cert: Buffer;
};
export declare enum CertificateKeyType {
    RSA = "RSA",
    ECP = "ECP"
}
export declare enum CertificateFormat {
    PEM = "PEM",
    DER = "DER"
}
export declare enum ECPCurve {
    SECP192R1 = "SECP192R1" /*!< Domain parameters for the 192-bit curve defined by FIPS 186-4 and SEC1. */,
    SECP224R1 = "SECP224R1" /*!< Domain parameters for the 224-bit curve defined by FIPS 186-4 and SEC1. */,
    SECP256R1 = "SECP256R1" /*!< Domain parameters for the 256-bit curve defined by FIPS 186-4 and SEC1. */,
    SECP384R1 = "SECP384R1" /*!< Domain parameters for the 384-bit curve defined by FIPS 186-4 and SEC1. */,
    SECP521R1 = "SECP521R1" /*!< Domain parameters for the 521-bit curve defined by FIPS 186-4 and SEC1. */,
    BP256R1 = "BP256R1" /*!< Domain parameters for 256-bit Brainpool curve. */,
    BP384R1 = "BP384R1" /*!< Domain parameters for 384-bit Brainpool curve. */,
    BP512R1 = "BP512R1" /*!< Domain parameters for 512-bit Brainpool curve. */,
    SECP192K1 = "SECP192K1" /*!< Domain parameters for 192-bit "Koblitz" curve. */,
    SECP224K1 = "SECP224K1" /*!< Domain parameters for 224-bit "Koblitz" curve. */,
    SECP256K1 = "SECP256K1" /*!< Domain parameters for 256-bit "Koblitz" curve. */
}
export type TLSCertParams = {
    format?: CertificateFormat;
    subject?: {
        commonName?: string;
        countryName?: string;
        state?: string;
        localityName?: string;
        organizationName?: string;
        organizationUnit?: string;
    };
    keyType?: CertificateKeyType;
    withQuote?: boolean;
    rsaKeyBits?: number;
    ecpCurve?: ECPCurve;
    serialNumber?: string;
    days?: number;
    dnsNames?: string[];
    ips?: string[];
};
export declare class PkiService {
    private readonly cryptoPrimitives;
    constructor();
    validateChain(certs: Buffer, format?: CertificateFormat): Promise<boolean>;
    validateHostname(certs: Buffer, hostnameOrIp: string, format?: CertificateFormat): Promise<boolean>;
    generateTlsCertificate(params?: TLSCertParams): Promise<TlsCertResult>;
}
