import express = require("express");
import http = require("http");
import https = require("https");
import { BaseRemoteCallHandler } from "./base_remote_call_handler";
import { CorsAllowedPreflightHandler } from "./cors_allowed_preflight_handler";
import { ServiceDescriptor } from "@selfage/service_descriptor";
import { RemoteCallHandlerInterface } from "@selfage/service_descriptor/remote_call_handler_interface";
export declare class HandlerRegister {
    private baseHandler;
    private serviceDescriptor;
    private router;
    private addedPaths;
    constructor(app: express.Application, baseHandler: BaseRemoteCallHandler, serviceDescriptor: ServiceDescriptor);
    add(remoteCallHandler: RemoteCallHandlerInterface): this;
}
export declare class ServiceHandler {
    private server;
    private baseHandler;
    private corsAllowedPreflightHandler;
    private app;
    static create(server: http.Server | https.Server, allowOrigin?: string, app?: express.Express): ServiceHandler;
    constructor(server: http.Server | https.Server, baseHandler: BaseRemoteCallHandler, corsAllowedPreflightHandler: CorsAllowedPreflightHandler, app: express.Express);
    addCorsAllowedPreflightHandler(): this;
    addMetricsHandler(): this;
    addHealthCheckHandler(): this;
    addReadinessHandler(): this;
    addHandlerRegister(serviceDescriptor: ServiceDescriptor): HandlerRegister;
    start(port: number): Promise<this>;
    stop(): Promise<void>;
}
