/// <reference types="node" />
import { Connection, Mongoose } from 'mongoose';
import http from 'http';
import https from 'https';
import { ModuleOptions, Database } from './types';
import { ArkExpressModule } from './module';
export declare type ExpressModuleMap = {
    [key: string]: ArkExpressModule;
};
export declare class ArkExpressPackage<T extends ExpressModuleMap = any> {
    static instance: any;
    static getInstance<T extends ExpressModuleMap>(): ArkExpressPackage<T>;
    private app;
    private utils;
    private mongoose;
    modules: T;
    databases: Database[];
    httpServer: http.Server;
    httpsServer: https.Server;
    httpsOptions: https.ServerOptions;
    httpOption: http.ServerOptions;
    httpPort: number;
    httpsPort: number;
    enableExpressSession: boolean;
    constructor();
    private _normalizeModuleOptions;
    useModule(id: string, module: ArkExpressModule, options?: ModuleOptions): ArkExpressPackage<T>;
    useDatabase(dbConfig: Database): ArkExpressPackage<T>;
    useMongoose(mongoose: Mongoose): ArkExpressPackage<T>;
    getDatabase(name?: string): Connection;
    resolveDatabaseModuleMap(moduleId: string, databaseName: string): string;
    configure(opts: http.ServerOptions): ArkExpressPackage<T>;
    configureHttps(opts: https.ServerOptions): ArkExpressPackage<T>;
    useMongoSession(value: boolean): ArkExpressPackage<T>;
    usePort(port?: number, securePort?: number): void;
    private _initializeModules;
    private _connectDatabases;
    private _connectUtilityMiddlewares;
    private _connectModuleMiddlewares;
    private _connectModuleRoutes;
    start(cb?: (err: Error) => void): void;
}
//# sourceMappingURL=package.d.ts.map