import { ElementRef } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup } from '@angular/forms';
import { DialogViewModel, FieldViewModel, IDraggableViewModel, ParameterViewModel } from '@nakedobjects/view-models';
import { Dictionary } from 'lodash';
import { SubscriptionLike as ISubscription } from 'rxjs';
export declare function safeUnsubscribe(sub?: ISubscription): void;
export declare function focus(element?: ElementRef): boolean;
export declare function createForm(dialog: DialogViewModel, formBuilder: FormBuilder): {
    form: FormGroup;
    dialog: DialogViewModel;
    parms: Dictionary<ParameterViewModel>;
    sub: ISubscription;
};
export declare function accept(droppableVm: FieldViewModel, component: {
    canDrop: boolean;
}, draggableVm: IDraggableViewModel): boolean;
export declare function dropOn(draggableVm: IDraggableViewModel, droppable: FieldViewModel, component: {
    canDrop: boolean;
    control: AbstractControl;
}): void;
export declare function paste(event: KeyboardEvent, droppable: FieldViewModel, component: {
    control: AbstractControl;
}, get: () => IDraggableViewModel | null, clear: () => void): void;
