import { Container as InversifyContainer } from 'inversify';
import type { InversifyContext } from './inversify/inversify-protocol';
import type { Syringe } from './core';
export declare class Container implements Syringe.Container, InversifyContext {
    static config(option: Syringe.InjectOption<void>): void;
    protected loadedModules: number[];
    container: InversifyContainer;
    protected inversify: boolean;
    parent?: Container;
    constructor(inversifyContainer?: InversifyContainer);
    load(module: Syringe.Module, force?: boolean): 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;
    protected resolveContext(): Syringe.Context;
}
export declare const GlobalContainer: Container;
export declare const register: Syringe.Register;
