import { type Newable, type ServiceIdentifier } from '@inversifyjs/common';
import { type BindingActivation, type BindingDeactivation, type GetAllOptions, type GetOptions, type OptionalGetOptions } from '@inversifyjs/core';
import { type BindToFluentSyntax } from '../../binding/models/BindingFluentSyntax.js';
import { type BindingIdentifier } from '../../binding/models/BindingIdentifier.js';
import { type ContainerModule } from '../models/ContainerModule.js';
import { type ContainerOptions } from '../models/ContainerOptions.js';
import { type IsBoundOptions } from '../models/isBoundOptions.js';
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;
    loadAsync(...modules: ContainerModule[]): Promise<void>;
    load(...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;
    rebindAsync<T>(serviceIdentifier: ServiceIdentifier<T>): Promise<BindToFluentSyntax<T>>;
    rebind<T>(serviceIdentifier: ServiceIdentifier<T>): BindToFluentSyntax<T>;
    snapshot(): void;
    unbindAsync(identifier: BindingIdentifier | ServiceIdentifier): Promise<void>;
    unbindAllAsync(): Promise<void>;
    unbindAll(): void;
    unbind(identifier: BindingIdentifier | ServiceIdentifier): void;
    unloadAsync(...modules: ContainerModule[]): Promise<void>;
    unload(...modules: ContainerModule[]): void;
}
//# sourceMappingURL=Container.d.ts.map