import { ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from "@angular/core";
import { AbstractControl, FormBuilder, FormGroup } from "@angular/forms";
import { Observable } from "rxjs";
import { DialogService, EventBus, IDataField, IDataSource, IEvent } from "@nova-ui/bits";
import { ITableWidgetColumnConfig } from "../../../../../components/table-widget/types";
import { IFormatterDefinition } from "../../../../../components/types";
import { PizzagnaService } from "../../../../../pizzagna/services/pizzagna.service";
import { IHasForm } from "../../../../../types";
import * as i0 from "@angular/core";
export declare class TableColumnsConfigurationComponent implements OnInit, IHasForm, OnChanges, OnDestroy {
    private formBuilder;
    private changeDetector;
    private dialogService;
    private pizzagnaService;
    private eventBus;
    static lateLoadKey: string;
    columns: ITableWidgetColumnConfig[];
    formatters: Array<IFormatterDefinition>;
    componentId: string;
    dataFields: Array<IDataField>;
    nodes: string[];
    formReady: EventEmitter<FormGroup<any>>;
    form: FormGroup;
    emptyColumns$: Observable<boolean>;
    dataSource: IDataSource;
    private onDestroy$;
    private lastValidDataFields;
    constructor(formBuilder: FormBuilder, changeDetector: ChangeDetectorRef, dialogService: DialogService, pizzagnaService: PizzagnaService, eventBus: EventBus<IEvent>);
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    onFormReady(form: AbstractControl): void;
    onItemsChange(columns: ITableWidgetColumnConfig[]): void;
    addColumn(): void;
    onResetColumns(): void;
    resetColumns(confirmation: boolean): void;
    /**
     * Merges current column definitions with new incoming data fields
     *
     * @param currentDatafields
     * @param columns
     */
    private mergeColumns;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TableColumnsConfigurationComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TableColumnsConfigurationComponent, "nui-table-columns-configuration", never, { "columns": { "alias": "columns"; "required": false; }; "formatters": { "alias": "formatters"; "required": false; }; "componentId": { "alias": "componentId"; "required": false; }; "dataFields": { "alias": "dataFields"; "required": false; }; "nodes": { "alias": "nodes"; "required": false; }; }, { "formReady": "formReady"; }, never, never, false, never>;
}
