import { Newable, ServiceIdentifier } from '@inversifyjs/common';
import { BindingActivation, BindingDeactivation, GetAllOptions, GetOptions, OptionalGetOptions } from '@inversifyjs/core';
import { BindToFluentSyntax } from '../../binding/models/BindingFluentSyntax';
import { BindingIdentifier } from '../../binding/models/BindingIdentifier';
import { ContainerModule } from '../models/ContainerModule';
import { ContainerOptions } from '../models/ContainerOptions';
import { IsBoundOptions } from '../models/isBoundOptions';
export declare class Container {
    #private;
    constructor(options?: ContainerOptions);
    bind<T>(serviceIdentifier: ServiceIdentifier<T>): BindToFluentSyntax<T>;
    get<T>(serviceIdentifier: ServiceIdentifier<T>, options: OptionalGetOptions): T | undefined;
    get<T>(serviceIdentifier: ServiceIdentifier<T>, options?: GetOptions): T;
    getAll<T>(serviceIdentifier: ServiceIdentifier<T>, options?: GetAllOptions): T[];
    getAllAsync<T>(serviceIdentifier: ServiceIdentifier<T>, options?: GetAllOptions): Promise<T[]>;
    getAsync<T>(serviceIdentifier: ServiceIdentifier<T>, options: OptionalGetOptions): Promise<T | undefined>;
    getAsync<T>(serviceIdentifier: ServiceIdentifier<T>, options?: GetOptions): Promise<T>;
    isBound(serviceIdentifier: ServiceIdentifier, options?: IsBoundOptions): boolean;
    isCurrentBound(serviceIdentifier: ServiceIdentifier, options?: IsBoundOptions): boolean;
    load(...modules: ContainerModule[]): Promise<void>;
    loadSync(...modules: ContainerModule[]): void;
    onActivation<T>(serviceIdentifier: ServiceIdentifier<T>, activation: BindingActivation<T>): void;
    onDeactivation<T>(serviceIdentifier: ServiceIdentifier<T>, deactivation: BindingDeactivation<T>): void;
    register(pluginConstructor: Newable): void;
    restore(): void;
    rebind<T>(serviceIdentifier: ServiceIdentifier<T>): Promise<BindToFluentSyntax<T>>;
    rebindSync<T>(serviceIdentifier: ServiceIdentifier<T>): BindToFluentSyntax<T>;
    snapshot(): void;
    unbind(identifier: BindingIdentifier | ServiceIdentifier): Promise<void>;
    unbindAll(): Promise<void>;
    unbindAllSync(): void;
    unbindSync(identifier: BindingIdentifier | ServiceIdentifier): void;
    unload(...modules: ContainerModule[]): Promise<void>;
    unloadSync(...modules: ContainerModule[]): void;
}
//# sourceMappingURL=Container.d.ts.map