import { Injector, OnDestroy, OnInit } from '@angular/core';
import { Subject } from 'rxjs';
import { DataSetItem, IWidgetConfig } from '@wm/components/base';
import { BaseFormCustomComponent } from './base-form-custom.component';
import * as i0 from "@angular/core";
export declare abstract class DatasetAwareFormComponent extends BaseFormCustomComponent implements OnInit, OnDestroy {
    groupby?: string;
    dataset: any;
    datafield: string;
    displayfield: string;
    displaylabel: string;
    displayimagesrc: string;
    displayexpression: string;
    usekeys: boolean;
    orderby: string;
    multiple: boolean;
    readonly: boolean;
    content: string;
    collapsible: boolean;
    datePipe: any;
    handleHeaderClick: ($event: any) => void;
    private toggleAllHeaders;
    appDefaults: any;
    binddisplayexpression: string;
    binddisplayimagesrc: string;
    binddisplaylabel: string;
    displayValue: Array<string> | string;
    datasetItems: DataSetItem[];
    acceptsArray: boolean;
    protected dataset$: Subject<unknown>;
    protected datavalue$: Subject<unknown>;
    protected match: string;
    protected dateformat: string;
    groupedData: any[];
    protected _modelByKey: any;
    _modelByValue: any;
    _defaultQueryInvoked: boolean;
    toBeProcessedDatavalue: any;
    private readonly _debouncedInitDatasetItems;
    protected allowempty: boolean;
    compareby: any;
    private cancelLocaleChangeSubscription;
    get modelByKey(): any;
    set modelByKey(val: any);
    get datavalue(): any;
    set datavalue(val: any);
    protected constructor(inj: Injector, config: IWidgetConfig, explicitContext: any, groupby?: string);
    /**
     * This function sets the _datavalue value from the model and sets the selected flag when item is found.
     * Here model is the value obtained from ngModel.
     * @param keys represent the model.
     */
    protected selectByKey(keys: any): void;
    /**
     * This function sets the _model value from the datavalue (selectedvalues) and sets the selected flag when item is found.
     * datavalue is the default value or a value representing the displayField (for suppose: object in case of ALLFIELDS).
     * If acceptsArray is true, the model always accepts an array.
     * For example, select always accepts model as array whether multiple select is true or false.
     * @param values represent the datavalue.
     */
    protected selectByValue(values: Array<any> | any): void;
    protected readonly _debounceDatavalueUpdation: import("lodash").DebouncedFunc<(values: any) => void>;
    protected initDisplayValues(): void;
    protected initDatasetItems(): void;
    protected postDatasetItemsInit(): void;
    protected resetDatasetItems(): void;
    protected setTemplate(partialName: any): void;
    private getGroupedData;
    private datasetSubscription;
    protected setGroupData(): void;
    onPropertyChange(key: string, nv: any, ov?: any): void;
    ngOnInit(): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DatasetAwareFormComponent, [null, null, { optional: true; }, { attribute: "groupby"; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DatasetAwareFormComponent>;
}
