import { Error as OrionError, Service } from '../orion';
import { Response } from '../response/response';
import { Request } from '../request/request';
import { HealthCheckResult } from './messages';
import { AsyncArray } from '../utils/asyncArray';
export declare const MILLISECOND = 1;
export declare const SECOND: number;
export declare const MINUTE: number;
export declare const DefaultWatchdogServiceName: () => string;
export declare class WatchdogPingRequest extends Request {
    params: {
        serviceId: string;
        name: string;
    };
    constructor(path: string, params: {
        serviceId: string;
        name: string;
    });
}
export declare class WatchdogPingResponse extends Response {
    payload: {
        status: HealthCheckResult;
    };
}
export interface WatchdogDependency {
    name: string;
    timeout: number;
}
export declare class WatchdogRegisterRequest extends Request {
    params: {
        serviceId: string;
        name: string;
        env: {
            [envVar: string]: string;
        };
        dependencies: WatchdogDependency[];
    };
    constructor(path: string, params: {
        serviceId: string;
        name: string;
        env: {
            [envVar: string]: string;
        };
        dependencies: WatchdogDependency[];
    });
}
export declare class WatchdogRegisterResponse extends Response {
    payload: {
        status: HealthCheckResult;
    };
}
export interface WatchdogRegisterLoopResult {
    killTheLoop: () => void;
    responseArray: AsyncArray<Response>;
}
export declare function WatchdogRegisterLoop(basePath: string, name: string, serviceId: string, dependencies: WatchdogDependency[], svc: Service): WatchdogRegisterLoopResult;
export interface Dependency {
    checkIsWorking: () => Promise<[string, OrionError | undefined]>;
    timeout: number;
    isInternal?: boolean;
    name: string;
}
