import { type ServiceIdentifier } from '@inversifyjs/common';
import { type Cloneable } from '../../common/models/Cloneable.js';
import { type AutobindOptions } from '../models/AutobindOptions.js';
import { type Binding } from '../models/Binding.js';
declare enum BindingRelationKind {
    id = "id",
    moduleId = "moduleId",
    serviceId = "serviceId"
}
export interface BindingRelation {
    [BindingRelationKind.id]: number;
    [BindingRelationKind.moduleId]?: number;
    [BindingRelationKind.serviceId]: ServiceIdentifier;
}
export declare class BindingService implements Cloneable<BindingService> {
    #private;
    private constructor();
    static build(getParent: () => BindingService | undefined, autobindOptions?: AutobindOptions): BindingService;
    clone(): BindingService;
    get<TResolved>(serviceIdentifier: ServiceIdentifier): Iterable<Binding<TResolved>> | undefined;
    getChained<TResolved>(serviceIdentifier: ServiceIdentifier): Generator<Binding<TResolved>, void, unknown>;
    getBoundServices(): Iterable<ServiceIdentifier>;
    getById<TResolved>(id: number): Iterable<Binding<TResolved>> | undefined;
    getByModuleId<TResolved>(moduleId: number): Iterable<Binding<TResolved>> | undefined;
    getNonParentBindings<TResolved>(serviceId: ServiceIdentifier): Iterable<Binding<TResolved>> | undefined;
    getNonParentBoundServices(): Iterable<ServiceIdentifier>;
    removeById(id: number): void;
    removeAllByModuleId(moduleId: number): void;
    removeAllByServiceId(serviceId: ServiceIdentifier): void;
    set<TInstance>(binding: Binding<TInstance>): void;
}
export {};
//# sourceMappingURL=BindingService.d.ts.map