/// <reference types="lodash" />
import { AutoCompleteComponent } from '../auto-complete/auto-complete.component';
import * as Models from '../models';
import { AbstractControl } from '@angular/forms';
import { FormGroup } from '@angular/forms';
import { ElementRef, QueryList, Renderer, OnDestroy } from '@angular/core';
import { ContextService } from '../context.service';
import { ChoiceViewModel } from '../view-models/choice-view-model';
import { IDraggableViewModel } from '../view-models/idraggable-view-model';
import { FieldViewModel } from '../view-models/field-view-model';
import { ParameterViewModel } from '../view-models/parameter-view-model';
import { DialogViewModel } from '../view-models/dialog-view-model';
import { PropertyViewModel } from '../view-models/property-view-model';
import { DomainObjectViewModel } from '../view-models/domain-object-view-model';
import { ConfigService } from '../config.service';
import { LoggerService } from '../logger.service';
import { Pane } from '../route-data';
import { Dictionary } from 'lodash';
import { BehaviorSubject } from 'rxjs';
import { DatePickerFacadeComponent } from '../date-picker-facade/date-picker-facade.component';
import { TimePickerFacadeComponent } from '../time-picker-facade/time-picker-facade.component';
export declare abstract class FieldComponent implements OnDestroy {
    private readonly context;
    private readonly configService;
    private readonly loggerService;
    private readonly renderer;
    protected constructor(context: ContextService, configService: ConfigService, loggerService: LoggerService, renderer: Renderer);
    formGroup: FormGroup;
    readonly message: string;
    readonly isBoolean: boolean;
    readonly subject: BehaviorSubject<any>;
    private formGrp;
    private vmParent;
    private model;
    private isConditionalChoices;
    private isAutoComplete;
    private bSubject;
    private sub;
    control: AbstractControl;
    currentOptions: ChoiceViewModel[];
    pArgs: Dictionary<Models.Value>;
    paneId: Pane;
    canDrop: boolean;
    protected init(vmParent: DialogViewModel | DomainObjectViewModel, vm: ParameterViewModel | PropertyViewModel, control: AbstractControl): void;
    accept(droppableVm: FieldViewModel): (draggableVm: IDraggableViewModel) => boolean;
    drop(draggableVm: IDraggableViewModel): void;
    private isDomainObjectViewModel(object);
    private mapValues(args, parmsOrProps);
    private populateArguments();
    private lastArgs;
    private argsChanged(newArgs);
    private populateDropdown();
    private onChange();
    private onValueChanged();
    private populateAutoComplete();
    protected populateBoolean(): void;
    private select(item);
    fileUpload(evt: Event): void;
    paste(event: KeyboardEvent): void;
    clear(): void;
    private filterEnter(event);
    protected handleKeyEvents(event: KeyboardEvent, isMultiline: boolean): void;
    private triStateClick;
    protected handleClick(event: Event): void;
    abstract checkboxList: QueryList<ElementRef>;
    abstract focusList: QueryList<ElementRef | DatePickerFacadeComponent | TimePickerFacadeComponent | AutoCompleteComponent>;
    focus(): boolean;
    ngOnDestroy(): void;
}
