import type { interfaces } from 'inversify';
import type { InversifyContext } from './inversify/inversify-protocol';
import type { Disposable, Syringe } from './core';
export declare class Container implements Syringe.Container, InversifyContext {
    static setContainer(key: interfaces.Container, value: Syringe.Container): Map<number, Syringe.Container>;
    static getContainer(key: interfaces.Container): Syringe.Container;
    static config(option: Syringe.InjectOption<void>): void;
    protected loadedModules: number[];
    container: interfaces.Container;
    protected inversify: boolean;
    parent?: Container;
    constructor(inversifyContainer?: interfaces.Container);
    load(module: Syringe.Module, force?: boolean): Disposable;
    unload(module: Syringe.Module): void;
    remove<T>(token: Syringe.Token<T>): void;
    get<T>(token: Syringe.Token<T>): T;
    getNamed<T>(token: Syringe.Token<T>, named: Syringe.Named): T;
    getAll<T>(token: Syringe.Token<T>): T[];
    getAllNamed<T>(token: Syringe.Token<T>, named: Syringe.Named): T[];
    isBound<T>(token: Syringe.Token<T>): boolean;
    isBoundNamed<T>(token: Syringe.Token<T>, named: Syringe.Named): boolean;
    createChild(): Syringe.Container;
    register<T = any>(tokenOrOption: Syringe.Token<T> | Syringe.InjectOption<T>): void;
    register<T = any>(token: Syringe.Token<T>, options: Syringe.InjectOption<T>): void;
}
export declare const GlobalContainer: Container;
export declare const register: Syringe.Register;
