/// <reference types="node" />
import http from 'http';
import { Health } from './Health';
/**
 * A probe listener for the liveness or readiness status of the application. Supports Express, Connect,
 * Fastify, Koa, and `http.Server`.
 */
export interface ProbeListener {
    (ctx: {
        res: http.ServerResponse;
    }): void;
    (req: any, res: http.ServerResponse): void;
    (req: any, res: {
        raw: http.ServerResponse;
    }): void;
}
/**
 * Creates a new `ProbeListener` that returns 200 if the specified `Health` instance is live, and 500 otherwise.
 *
 * @param health the `Health` instance
 * @returns an `ProbeListener`
 */
export declare function createLivenessProbeListener(health: Health): ProbeListener;
/**
 * Creates a new `ProbeListener` that returns 200 if the specified `Health` instance is ready, and 500 otherwise.
 *
 * @param health the `Health` instance
 * @returns an `ProbeListener`
 */
export declare function createReadinessProbeListener(health: Health): ProbeListener;
/**
 * Options for the health probe server
 */
export interface ProbeServerOptions {
    /**
     * Pathname of the liveness endpoint
     *
     * @default '/healthz'
     */
    livenessEndpoint?: string;
    /**
     * Pathname of the readiness endpoint
     *
     * @default '/readyz'
     */
    readinessEndpoint?: string;
}
/**
 * Creates a new `http.Server` configured to serve the liveness and readiness endpoints for a given Health instance.
 *
 * @param health the `Health` instance to serve
 * @param options options for the health probe server
 * @returns an `http.Server` ready to serve the health probes
 */
export declare function createProbeServer(health: Health, options?: ProbeServerOptions): http.Server;
export interface ProbeServerListenOptions {
    /**
     * The port to listen on
     *
     * @default 4000
     */
    port?: number;
    /**
     * The hostname to bind to
     *
     * @default all hostnames
     */
    hostname?: string;
}
/**
 * Create and start a health probe server, listening on on the specified port / hostname.
 *
 * @param health the `Health` instance to serve
 * @param options options for the health probe server
 */
export declare function startProbeServer(health: Health, options?: ProbeServerOptions & ProbeServerListenOptions): http.Server;
