import { ElementRef, OnDestroy, QueryList, Renderer2 } from '@angular/core';
import { AbstractControl, FormGroup } from '@angular/forms';
import * as Ro from '@nakedobjects/restful-objects';
import { LoggerService, Pane } from '@nakedobjects/services';
import { ChoiceViewModel, DialogViewModel, DomainObjectViewModel, DragAndDropService, IDraggableViewModel, MenuViewModel, ParameterViewModel, PropertyViewModel } from '@nakedobjects/view-models';
import { Dictionary } from 'lodash';
import { BehaviorSubject } from 'rxjs';
import { AutoCompleteComponent } from '../auto-complete/auto-complete.component';
import { DatePickerFacadeComponent } from '../date-picker-facade/date-picker-facade.component';
import { TimePickerFacadeComponent } from '../time-picker-facade/time-picker-facade.component';
import { CdkDrag, CdkDropList, CdkDragDrop } from '@angular/cdk/drag-drop';
import * as i0 from "@angular/core";
export declare abstract class FieldComponent implements OnDestroy {
    private readonly loggerService;
    private readonly renderer;
    protected readonly dragAndDrop: DragAndDropService;
    protected constructor(loggerService: LoggerService, renderer: Renderer2, dragAndDrop: DragAndDropService);
    set formGroup(fm: FormGroup);
    get formGroup(): FormGroup;
    get message(): string;
    get isBoolean(): boolean;
    get subject(): BehaviorSubject<unknown>;
    private formGrp;
    private vmParent?;
    private model;
    private isConditionalChoices?;
    private isAutoComplete?;
    private bSubject?;
    private sub?;
    private lastArgs?;
    control: AbstractControl;
    currentOptions: ChoiceViewModel[];
    pArgs?: Dictionary<Ro.Value>;
    paneId?: Pane;
    canDrop: boolean;
    dragOver: boolean;
    abstract checkboxList?: QueryList<ElementRef>;
    abstract focusList?: QueryList<ElementRef | DatePickerFacadeComponent | TimePickerFacadeComponent | AutoCompleteComponent>;
    protected init(vmParent: DialogViewModel | DomainObjectViewModel | MenuViewModel | undefined, vm: ParameterViewModel | PropertyViewModel, control: AbstractControl): void;
    get accept(): (cdkDrag: CdkDrag<IDraggableViewModel>, _cdkDropList: CdkDropList) => boolean;
    drop(event: CdkDragDrop<CdkDrag<IDraggableViewModel>>): void;
    exit(): void;
    enter(): void;
    private isDomainObjectViewModel;
    private mapValues;
    private populateArguments;
    private argsChanged;
    private populateDropdown;
    private onChange;
    private onValueChanged;
    private populateAutoComplete;
    protected populateBoolean(): void;
    private select;
    fileUpload(evt: Event): void;
    paste(event: KeyboardEvent): void;
    clear(): void;
    private filterEnter;
    protected handleKeyEvents(event: KeyboardEvent, isMultiline: boolean): void;
    private triStateClick;
    protected handleClick(event: Event): void;
    focus(): boolean;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<FieldComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<FieldComponent, "ng-component", never, {}, {}, never, never, false, never>;
}
