///
import './compatibility';
import { HttpError } from 'http-errors';
import { Server, IncomingMessage, ServerResponse } from 'http';
import { ListenOptions } from 'net';
import { WebRequest } from './WebRequest';
import { WebResponse } from './WebResponse';
import { WebContext } from './WebContext';
import { Application } from './Application';
import { WebController } from '../routers/WebController';
import { Controller } from '../routers/Controller';
import { CookieOptions } from '../utils/cookie';
interface Options {
routesPath?: string | string[];
proxy?: boolean;
proxyIpHeader?: string;
env?: string;
maxIpsCount?: number;
subdomainOffset?: number;
locale?: string;
cookie?: CookieOptions;
}
export declare type FomexError = Error | HttpError | NodeJS.ErrnoException;
export declare class WebApplication extends Application {
protected readonly options: Required;
constructor(options?: Options);
listen(port?: number, hostname?: string, backlog?: number, listeningListener?: () => void): Server;
listen(port?: number, hostname?: string, listeningListener?: () => void): Server;
listen(port?: number, backlog?: number, listeningListener?: () => void): Server;
listen(port?: number, listeningListener?: () => void): Server;
listen(path: string, backlog?: number, listeningListener?: () => void): Server;
listen(path: string, listeningListener?: () => void): Server;
listen(options: ListenOptions, listeningListener?: () => void): Server;
listen(handle: any, backlog?: number, listeningListener?: () => void): Server;
listen(handle: any, listeningListener?: () => void): Server;
on(event: 'error' | 'errorRespond', listener: (err: FomexError, ctx: WebContext) => void): this;
on(event: string | symbol, listener: (...args: any[]) => void): this;
once(event: 'error' | 'errorRespond', listener: (err: FomexError, ctx: WebContext) => void): this;
once(event: string | symbol, listener: (...args: any[]) => void): this;
/**
* Useful for testing scenario.
*/
appendRoutes(routes: WebController | WebController[]): this;
protected getControllerInstance(): new (...args: any[]) => Controller;
protected serverCallback(): (req: IncomingMessage, res: ServerResponse) => void;
onerror(err: FomexError): void;
protected createRequest(req: IncomingMessage): WebRequest;
protected createResponse(res: ServerResponse): WebResponse;
protected createContext(req: IncomingMessage, res: ServerResponse): WebContext<{}, {}>;
protected handleRequest(ctx: WebContext): void;
protected inspect(): {
subdomainOffset: number;
proxy: boolean;
env: string;
};
protected toJSON(): {
subdomainOffset: number;
proxy: boolean;
env: string;
};
protected respond(ctx: WebContext): any;
}
export {};