/// <reference types="node" />
import { IActivatable, IDeactivatable, IWebGatewayRequest, IWebGatewayResponse } from '@darlean/base';
import { IncomingMessage, Server, ServerResponse } from 'http';
import { IGatewayFlowCfg } from './intf';
export interface IHandler {
    method?: string;
    path?: string;
    action: (req: IWebGatewayRequest) => Promise<IWebGatewayResponse>;
    flow?: IGatewayFlowCfg;
    maxContentLength?: number;
}
export interface IGateway {
    name: string;
    port: number;
    handlers: IHandler[];
    keepAliveTimeout: number;
    maxContentLength?: number;
}
export declare class WebGatewayActor implements IActivatable, IDeactivatable {
    protected server: Server;
    protected config: IGateway;
    protected port?: number;
    private close;
    private pathMatchers;
    constructor(config: IGateway);
    activate(): Promise<void>;
    deactivate(): Promise<void>;
    touch(): Promise<void>;
    protected handleRequest(req: IncomingMessage, res: ServerResponse<IncomingMessage>): Promise<void>;
}
