/// <reference types="node" />
import { UrlWithStringQuery } from 'url';
import { CertificateCheckResult, ExecuteMonitorParamsDTO, ExecutorCheckResult, Headers, HttpsCheckResult, LatencyCheckResult } from '@meshwatch/types';
import BaseService from '../../shared/services';
import { NodeFetch } from './types';
export declare class MonitorExecutorService extends BaseService {
    private readonly certificateCache;
    private readonly fetch;
    constructor(fetch?: NodeFetch);
    static readonly DEFAULT_EXECUTOR_TIMEOUT: number;
    executeMonitorCheck: <T extends ExecuteMonitorParamsDTO>(params: T) => Promise<import("../../shared/services").ServiceResponse<import("@meshwatch/types").SuccesffulLatencyCheck | import("@meshwatch/types").ErrorLatencyCheck | import("@meshwatch/types").InvalidCertificateCheck | import("@meshwatch/types").ValidCertificateCheck | import("@meshwatch/types").ValidHttpsCheck | import("@meshwatch/types").InvalidHttpsCheck | import("@meshwatch/types").Boom<import("../../shared/validation/types").FormErrors<ExecutorCheckResult>>>>;
    latencyCheck({ url, timeout, headers, }: LatencyCheckParams): Promise<LatencyCheckResult>;
    certificateCheck(url: UrlWithStringQuery, timeout?: number): Promise<CertificateCheckResult>;
    httpsCheck(url: UrlWithStringQuery, timeout?: number): Promise<HttpsCheckResult>;
    private parseCertificate;
}
declare type LatencyCheckParams = {
    url: UrlWithStringQuery;
    timeout?: number;
    headers?: Headers;
};
declare const monitorExecutorService: MonitorExecutorService;
export default monitorExecutorService;
