import * as breeze from 'breeze-client';
export declare class ManyToManyRelationHelper<TLinkEntity extends breeze.Entity, TTargetEntity extends breeze.Entity> {
    selectedEntities: TTargetEntity[];
    selectedEntitiesId: number[];
    private previousSelectedEntitiesId;
    private isCancelling;
    private isInitializing;
    private innerService;
    private dataObserveSubscription;
    private bindingEngine;
    private linkEntitiesArray;
    private linkEntityTypeName;
    private targetEntityTypeName;
    private entity;
    private targetEntitySelector;
    private targetEntityIdSelector;
    private createMapEntityKey;
    private createTagFn;
    manager: breeze.EntityManager;
    entityChangedKey: number;
    private get service();
    constructor(entity: breeze.Entity | AnyObject, fkPropertyName: string);
    constructor(entity: breeze.Entity | AnyObject, fkPropertyName: string, createTagFnOrStr: string | ((value: string) => breeze.Entity), propertyTarget: string);
    constructor(entity: breeze.Entity | AnyObject, linkEntitiesArray: TLinkEntity[], linkEntityTypeName: string, targetEntityTypeName: string, targetEntitySelector: (entity: TLinkEntity) => TTargetEntity, targetEntityIdSelector: (entity: TLinkEntity) => number, createMapEntityKey: (targetEntityId: number) => any);
    autoConstructor(args: AnyObject[]): void;
    explicitConstructor(args: AnyObject[]): void;
    unbind(): void;
    addLinkEntity(entity: TTargetEntity): void;
    cancel(): void;
    reset(): void;
    selectedEntitiesIdChanged(newValue: Array<number>, oldValue: Array<Number>): void;
    initialize(self: ManyToManyRelationHelper<TLinkEntity, TTargetEntity>): void;
    initializeData(self: ManyToManyRelationHelper<TLinkEntity, TTargetEntity>): void;
    observeData(): void;
    dataChanged(splices: any): void;
}
