import { CdkDragDrop, CdkDragStart } from "@angular/cdk/drag-drop";
import { ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from "@angular/core";
import { FormBuilder, FormControl, FormGroup } from "@angular/forms";
import { Observable } from "rxjs";
import { DialogService, EventBus, IDataField, IDataSource, IEvent } from "@nova-ui/bits";
import { IDataSourceError } from "../../../../../components/providers/types";
import { ITableWidgetColumnConfig } from "../../../../../components/table-widget/types";
import { PizzagnaService } from "../../../../../pizzagna/services/pizzagna.service";
import { TableFormatterRegistryService } from "../../../../../services/table-formatter-registry.service";
import { IHasForm } from "../../../../../types";
import { ConfiguratorDataSourceManagerService } from "../../../../services/configurator-data-source-manager.service";
import * as i0 from "@angular/core";
export declare class TableColumnsConfigurationV2Component implements OnInit, IHasForm, OnChanges, OnDestroy {
    private formBuilder;
    private changeDetector;
    private dialogService;
    private pizzagnaService;
    dataSourceManager: ConfiguratorDataSourceManagerService;
    tableFormatterRegistry: TableFormatterRegistryService;
    private eventBus;
    static lateLoadKey: string;
    columns: ITableWidgetColumnConfig[];
    componentId: string;
    /**
     * @deprecated backward compatibility measure - deprecated in v11. Removal: NUI-5898
     *
     * This property is here because it was present in V1 component and was used to configure formatters
     */
    template: any;
    formReady: EventEmitter<FormGroup<any>>;
    form: FormGroup;
    emptyColumns$: Observable<boolean>;
    dataSourceFields: Array<IDataField>;
    draggedItemHeight: number;
    isWidthMessageDisplayed: boolean;
    dataSourceError: IDataSourceError | null;
    get columnForms(): FormControl[];
    dataSource: IDataSource;
    columnLabel: string;
    private onDestroy$;
    constructor(formBuilder: FormBuilder, changeDetector: ChangeDetectorRef, dialogService: DialogService, pizzagnaService: PizzagnaService, dataSourceManager: ConfiguratorDataSourceManagerService, tableFormatterRegistry: TableFormatterRegistryService, eventBus: EventBus<IEvent>);
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    getColumns(): any[];
    updateColumns(columns: ITableWidgetColumnConfig[], emitEvent?: boolean): void;
    trackBy(index: number, item: FormControl): string | undefined;
    addColumn(): void;
    onResetColumns(): void;
    resetColumns(confirmation: boolean): void;
    /**
     * Merges current column definitions with new incoming data fields
     *
     * @param currentDatafields
     * @param columns
     */
    private mergeColumns;
    /**
     * This method calculates whether the width message should be displayed
     *
     * @param columns
     * @private
     */
    private getWidthMessageDisplayed;
    moveItem(index: number, toIndex: number): void;
    removeItem(index: number): void;
    drop(event: CdkDragDrop<string[]>): void;
    cdkDragStarted(event: CdkDragStart): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TableColumnsConfigurationV2Component, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TableColumnsConfigurationV2Component, "nui-table-columns-configuration", never, { "columns": { "alias": "columns"; "required": false; }; "componentId": { "alias": "componentId"; "required": false; }; "template": { "alias": "template"; "required": false; }; }, { "formReady": "formReady"; }, never, never, false, never>;
}
