import { EventDispatcher } from "../../events/impl/EventDispatcher";
import { IClass } from "../../extensions/matching/IClass";
import { IBundle } from "../api/IBundle";
import { IConfig } from "../api/IConfig";
import { IContext } from "../api/IContext";
import { IExtension } from "../api/IExtension";
import { IInjector } from "../api/IInjector";
import { ILogger } from "../api/ILogger";
import { ILogTarget } from "../api/ILogTarget";
import { IMatcher } from "../api/IMatcher";
/**
 * The core Robotlegs Context implementation
 */
export declare class Context extends EventDispatcher implements IContext {
    /**
     * @inheritDoc
     */
    get injector(): IInjector;
    /**
     * @inheritDoc
     */
    get logLevel(): number;
    /**
     * @inheritDoc
     */
    set logLevel(value: number);
    /**
     * @inheritDoc
     */
    get state(): string;
    /**
     * @inheritDoc
     */
    get uninitialized(): boolean;
    /**
     * @inheritDoc
     */
    get initialized(): boolean;
    /**
     * @inheritDoc
     */
    get active(): boolean;
    /**
     * @inheritDoc
     */
    get suspended(): boolean;
    /**
     * @inheritDoc
     */
    get destroyed(): boolean;
    private _uid;
    private _injector;
    private _logManager;
    private _children;
    private _pin;
    private _lifecycle;
    private _configManager;
    private _extensionInstaller;
    private _logger;
    /**
     * Creates a new Context
     */
    constructor();
    /**
     * @inheritDoc
     */
    initialize(callback?: Function): void;
    /**
     * @inheritDoc
     */
    suspend(callback?: Function): void;
    /**
     * @inheritDoc
     */
    resume(callback?: Function): void;
    /**
     * @inheritDoc
     */
    destroy(callback?: Function): void;
    /**
     * @inheritDoc
     */
    beforeInitializing(handler: Function): IContext;
    /**
     * @inheritDoc
     */
    whenInitializing(handler: Function): IContext;
    /**
     * @inheritDoc
     */
    afterInitializing(handler: Function): IContext;
    /**
     * @inheritDoc
     */
    beforeSuspending(handler: Function): IContext;
    /**
     * @inheritDoc
     */
    whenSuspending(handler: Function): IContext;
    /**
     * @inheritDoc
     */
    afterSuspending(handler: Function): IContext;
    /**
     * @inheritDoc
     */
    beforeResuming(handler: Function): IContext;
    /**
     * @inheritDoc
     */
    whenResuming(handler: Function): IContext;
    /**
     * @inheritDoc
     */
    afterResuming(handler: Function): IContext;
    /**
     * @inheritDoc
     */
    beforeDestroying(handler: Function): IContext;
    /**
     * @inheritDoc
     */
    whenDestroying(handler: Function): IContext;
    /**
     * @inheritDoc
     */
    afterDestroying(handler: Function): IContext;
    /**
     * @inheritDoc
     */
    install(...extensions: IBundle[] | IClass<IBundle>[] | IExtension[] | IClass<IExtension>[]): IContext;
    /**
     * @inheritDoc
     */
    configure(...configs: IConfig[] | IClass<IConfig>[]): IContext;
    /**
     * @inheritDoc
     */
    addChild(child: IContext): IContext;
    /**
     * @inheritDoc
     */
    removeChild(child: IContext): IContext;
    /**
     * @inheritDoc
     */
    addConfigHandler(matcher: IMatcher, handler: Function): IContext;
    /**
     * @inheritDoc
     */
    getLogger(source: any): ILogger;
    /**
     * @inheritDoc
     */
    addLogTarget(target: ILogTarget): IContext;
    /**
     * @inheritDoc
     */
    detain(...instances: any[]): IContext;
    /**
     * @inheritDoc
     */
    release(...instances: any[]): IContext;
    /**
     * @inheritDoc
     */
    toString(): string;
    /**
     * Configures mandatory context dependencies
     */
    private _setup;
    private _beforeInitializingCallback;
    private _afterInitializingCallback;
    private _beforeDestroyingCallback;
    private _afterDestroyingCallback;
    private _onChildDestroy;
    private _removeChildren;
}
