import interfaces from "../interfaces/interfaces";
declare class Kernel implements interfaces.Kernel {
    guid: string;
    private _planner;
    private _resolver;
    private _middleware;
    private _bindingDictionary;
    private _snapshots;
    private _parentKernel;
    constructor();
    load(...modules: interfaces.KernelModule[]): void;
    unload(...modules: interfaces.KernelModule[]): void;
    bind<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): interfaces.BindingToSyntax<T>;
    unbind(serviceIdentifier: interfaces.ServiceIdentifier<any>): void;
    unbindAll(): void;
    isBound(serviceIdentifier: interfaces.ServiceIdentifier<any>): boolean;
    get<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): T;
    getNamed<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, named: string): T;
    getTagged<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, key: string, value: any): T;
    snapshot(): void;
    restore(): void;
    getServiceIdentifierAsString(serviceIdentifier: interfaces.ServiceIdentifier<any>): string;
    applyMiddleware(...middlewares: interfaces.Middleware[]): void;
    getAll<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): T[];
    getAllNamed<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, named: string): T[];
    getAllTagged<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, key: string, value: any): T[];
    parent: interfaces.Kernel;
    private _get<T>(args);
    private _planAndResolve<T>(args);
    private _getActiveBindings<T>(multiInject, serviceIdentifier, target);
    private _plan<T>(multiInject, serviceIdentifier, target);
    private _createContext<T>(binding, target);
    private _resolve<T>(contexts, contextInterceptor);
    private _listRegisteredBindingsForServiceIdentifier(serviceIdentifier);
}
export default Kernel;
