/// <reference types="node" />
import nodeFetch from '@meshwatch/node-fetch';
import { Headers, Monitor } from '@meshwatch/types';
import { UrlWithStringQuery } from 'url';
import { CertificateCheck, HttpsCheck, LatencyCheck, MonitorExecutorCheck } from '../types/executor';
declare type Fetch = typeof nodeFetch;
export declare class MonitorExecutorService {
    private fetch;
    constructor(fetch?: Fetch);
    static readonly DEFAULT_EXECUTOR_TIMEOUT = 10000;
    executeMonitorCheck(monitor: Monitor): Promise<MonitorExecutorCheck>;
    latencyCheck({ url, timeout, headers, }: LatencyCheckParams): Promise<LatencyCheck>;
    certificateCheck(url: UrlWithStringQuery, timeout?: number): Promise<CertificateCheck>;
    httpsCheck(url: UrlWithStringQuery, timeout?: number): Promise<HttpsCheck>;
    private parseCertificate;
}
declare type LatencyCheckParams = {
    url: UrlWithStringQuery;
    timeout?: number;
    headers?: Headers;
};
declare const monitorExecutorService: MonitorExecutorService;
export default monitorExecutorService;
