import * as express from 'express';
import { IGypsumConfig, IServerConfigOptions } from './config';
import { Context } from './context';
import { Model } from './models';
import { IHookFunc } from './decorators';
import { App } from './app';
import { IAuthConfig, IAuthEnvConfig } from './auth/config';
import { IStorageConfig, IStorageEnvConfig } from './storage/config';
export interface IMiddleware {
    (app: express.Express): void;
}
export declare class AppState {
    private _sockets;
    readonly router: express.Router;
    readonly root: string;
    readonly env: string;
    ioNamespaces: {
        [key: string]: any;
    };
    config: IServerConfigOptions;
    apps: App[];
    storage: IStorageConfig;
    auth: IAuthConfig;
    middlewares: Function;
    hooks: IHookFunc[];
    currentContext: Context;
    getApp(name: string): App;
    getModel<T extends Model = Model>(path: string): T;
    getHook(name: string): IHookFunc;
    setConfiguration(userConfig?: IGypsumConfig): void;
    setAuthConfig(auth?: IAuthEnvConfig): void;
    setStorageConfig(storageConfig?: IStorageEnvConfig): void;
}
declare const State: AppState;
export { State };
