import { Observable } from 'rxjs';
import { IManager, IBaseModelConstructor, IModelMetadataOptions, IModelPropertyMetadataOptions, IModelRelationMetadataOptions, IConnection, IConnectionOptions } from './interfaces';
export declare class Manager implements IManager {
    protected _connections: Map<string, IConnection>;
    protected _models: Map<string, IBaseModelConstructor>;
    protected _applyMetadataToModels(): void;
    protected _attachModelsToConnections(): void;
    attachModelToConnection(model: string | IBaseModelConstructor, connection: string | IConnection): void;
    hasConnection(connectionName: string): boolean;
    getConnection(connectionName: string): IConnection;
    defineConnection(options: IConnectionOptions): IConnection;
    hasModel(modelName: string): boolean;
    getModel(modelName: string): IBaseModelConstructor;
    defineModel(model: IBaseModelConstructor, options: IModelMetadataOptions, properties?: {
        [key: string]: IModelPropertyMetadataOptions;
    }, relations?: {
        [key: string]: IModelRelationMetadataOptions;
    }): void;
    init(): Observable<Manager>;
}
export declare const manager: Manager;
