import { DirectiveBinding } from 'vue';
import { Subscription } from 'rxjs';
import { DescendantChildren } from './desc-reg.service';
import { DragSyncDescendantRegisterService } from './drag-drop-descendant-sync.service';
import { DragDropSyncService } from './drag-drop-sync.service';
import { DragDropService } from '../drag-drop.service';
import { DraggableDirective } from '../draggable.directive';
export interface IDragSyncBinding {
    dragSync?: string;
    dragSyncGroup?: string;
    [props: string]: any;
}
export declare class DragSyncDirective extends DescendantChildren<DragSyncDirective, IDragSyncBinding> {
    private draggable;
    private dragDropSyncService;
    private dragDropService;
    static INSTANCE_KEY: string;
    inputNameMap?: {
        [key: string]: string;
    } | undefined;
    dragSyncGroup: string;
    subscription: Subscription;
    syncGroupDirectives?: Array<DragSyncDirective>;
    el: {
        nativeElement: any;
    };
    constructor(el: HTMLElement, draggable: DraggableDirective, dragDropSyncService: DragDropSyncService, dragDropService: DragDropService, dragSyncDrs: DragSyncDescendantRegisterService);
    ngOnInit(): void;
    ngOnDestroy(): void;
    subDragElEvent: (bool: boolean) => void;
    renderDisplay(nativeEl: HTMLElement, bool: boolean): void;
}
declare const _default: {
    mounted(el: HTMLElement & {
        [props: string]: any;
    }, binding: DirectiveBinding<IDragSyncBinding>, vNode: any): void;
    updated(el: HTMLElement & {
        [props: string]: any;
    }, binding: DirectiveBinding<IDragSyncBinding>): void;
    beforeUnmount(el: HTMLElement & {
        [props: string]: any;
    }): void;
};
export default _default;
