import { Response } from '../response/response';
import { Request } from '../request/request';
import { Dependency } from './health';
export declare const WHO_ARE_YOU = "WHO_ARE_YOU";
export declare enum AggregationType {
    INTERNAL = "internal",
    EXTERNAL = "external"
}
export declare enum HealthCheckResult {
    HC_OK = "OK",
    HC_WARN = "WARN",
    HC_CRIT = "CRIT"
}
export declare function AmIUpHandle(req: AmIUpRequest): Promise<AmIUpResponse>;
export declare class AmIUpResponse extends Response {
    constructor();
    payload: {
        status: string;
    };
}
export declare class AmIUpRequest extends Request {
}
export interface AggregateParams {
    type?: AggregationType;
}
export declare class AggregateRequest extends Request {
    params: AggregateParams;
    constructor(path: string, params: AggregateParams);
}
export interface DependencyCheckResult {
    description?: string;
    result: HealthCheckResult;
    details?: any;
}
export declare class AggregateResponse extends Response {
    payload: DependencyCheckResult[];
    constructor(payload: DependencyCheckResult[]);
}
export declare function AggregateHandleGenerator(checks: {
    [name: string]: Dependency;
}): (req: AggregateRequest) => Promise<AggregateResponse>;
export declare class DependencyRequest extends Request {
}
export declare class DependencyResponse extends Response {
    payload: DependencyCheckResult;
    constructor(payload: DependencyCheckResult);
}
export declare function DependencyHandleGenerator(check: Dependency): (req: DependencyRequest) => Promise<DependencyResponse>;
