///
import * as Koa from 'koa';
import * as http from 'http';
import * as https from 'https';
import { TUmaOption } from '../types/TUmaOption';
import { IContext } from '../types/IContext';
import { TConfig } from '../types/TConfig';
import { TControllerInfo } from '../types/TControllerInfo';
import { TPluginConfig } from '../types/TPluginConfig';
export default class Uma {
readonly options: TUmaOption;
private constructor();
env: string;
app: Koa;
server: http.Server | https.Server;
callback: Function;
port: number;
routers: string[];
config: TConfig;
private load;
loadConfig(): void;
loadAspect(): void;
loadResource(): void;
loadService(): void;
loadController(): void;
loadPlugin(): Promise;
use(mw: Koa.Middleware): void;
get context(): IContext;
start(port?: number, callback?: Function): Promise;
prepare(): Promise;
static version: string;
static use(mw: Koa.Middleware): void;
static get env(): string;
static get app(): Koa;
static get server(): http.Server | https.Server;
static get options(): TUmaOption;
static get config(): TConfig;
static get pluginConfig(): boolean | TPluginConfig;
static get pluginKeys(): string[];
static pluginOptions(pluginName: string): {
[key: string]: any;
};
static get context(): IContext;
static get controllersInfo(): IterableIterator;
static instance(options?: TUmaOption): Uma;
static middleware(options: TUmaOption, app: Koa): Promise;
static callback(options: TUmaOption, app?: Koa): Promise<(req: http.IncomingMessage | import("http2").Http2ServerRequest, res: http.ServerResponse | import("http2").Http2ServerResponse) => void>;
}