import EventEmitter from "eventemitter3";
import express = require("express");
import http = require("http");
import https = require("https");
import http2 = require("http2");
export interface MiddlewareDefs {
    prepend: any | any[];
    append: any | any[];
}
export declare class App {
    private static _instance;
    static get Instance(): App;
    newInstance(): App;
    constructor();
    expressApp: express.Application;
    server: any;
    events: EventEmitter;
    on: (eventName: string, callback: EventEmitter.ListenerFn) => void;
    once: (eventName: string, callback: EventEmitter.ListenerFn) => void;
    off: (eventName: string, callback: EventEmitter.ListenerFn) => void;
    init: (middlewares?: MiddlewareDefs) => void;
    start: () => http.Server | https.Server | http2.Http2Server | http2.Http2SecureServer;
    kill: () => void;
    all: (...args: any[]) => any;
    get: (...args: any[]) => any;
    post: (...args: any[]) => any;
    put: (...args: any[]) => any;
    patch: (...args: any[]) => any;
    delete: (...args: any[]) => any;
    head: (...args: any[]) => any;
    use: (...args: any[]) => any;
    set: (...args: any[]) => any;
    route: (reqPath: string) => express.IRoute;
    renderView: (req: express.Request, res: express.Response, view: string, options?: any, status?: number) => void;
    renderText: (req: express.Request, res: express.Response, text: any, status?: number) => void;
    renderJson: (req: express.Request, res: express.Response, data: any, status?: number) => void;
    renderImage: (req: express.Request, res: express.Response, filename: string, options?: any) => void;
    renderError: (req: express.Request, res: express.Response, error: any, status?: number | string) => void;
}
declare const _default: App;
export default _default;
