import { ServiceIdentifier } from '@inversifyjs/common';
import { Cloneable } from '../../common/models/Cloneable';
import { OneToManyMapStar, OneToManyMapStartSpec } from '../../common/models/OneToManyMapStar';
import { AutobindOptions } from '../models/AutobindOptions';
import { Binding } from '../models/Binding';
declare enum BindingRelationKind {
    id = "id",
    moduleId = "moduleId",
    serviceId = "serviceId"
}
export interface BindingRelation {
    [BindingRelationKind.id]: number;
    [BindingRelationKind.moduleId]?: number;
    [BindingRelationKind.serviceId]: ServiceIdentifier;
}
export declare class OneToManyBindingMapStar extends OneToManyMapStar<Binding<unknown>, BindingRelation> {
    protected _buildNewInstance(spec: OneToManyMapStartSpec<BindingRelation>): this;
    protected _cloneModel(model: Binding<unknown>): Binding<unknown>;
}
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