import { AfterViewInit, ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from "@angular/core";
import { FormBuilder, FormGroup } from "@angular/forms";
import { IDataField } from "@nova-ui/bits";
import { IFormatter, IFormatterConfigurator, IFormatterDefinition } from "../../../../../../../components/types";
import { FormatterRegistryService, TableFormatterRegistryService } from "../../../../../../../services/table-formatter-registry.service";
import { IHasChangeDetector } from "../../../../../../../types";
import { ConfiguratorHeadingService } from "../../../../../../services/configurator-heading.service";
import * as i0 from "@angular/core";
export declare class PresentationConfigurationComponent implements IHasChangeDetector, OnInit, OnDestroy, OnChanges, AfterViewInit {
    private formBuilder;
    changeDetector: ChangeDetectorRef;
    configuratorHeading: ConfiguratorHeadingService;
    private formattersRegistryCommon;
    /**
     * @deprecated  will be removed in the scope of NUI-5839
     */
    private tableFormattersRegistryService;
    static lateLoadKey: string;
    private _providedFormatters;
    private _formatters;
    formatter: IFormatter;
    set formatters(formatters: Array<IFormatterDefinition>);
    get formatters(): IFormatterDefinition[];
    dataFieldIds: string[];
    private _dataFields;
    set dataFields(dataFields: Array<IDataField>);
    get dataFields(): IDataField[];
    formReady: EventEmitter<FormGroup>;
    formDestroy: EventEmitter<FormGroup>;
    form: FormGroup;
    formatterForm: FormGroup;
    formatterConfigurator: string | null;
    formatterConfiguratorProps: IFormatterConfigurator;
    readonly formatterFormGroupName = "formatter";
    subtitleText: string;
    private onDestroy$;
    constructor(formBuilder: FormBuilder, changeDetector: ChangeDetectorRef, configuratorHeading: ConfiguratorHeadingService, formattersRegistryCommon: FormatterRegistryService, 
    /**
     * @deprecated  will be removed in the scope of NUI-5839
     */
    tableFormattersRegistryService: TableFormatterRegistryService);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    getSelectedFormatterDefinition(): IFormatterDefinition | null;
    getSelectedDataField(): IDataField | null;
    onFormReady(form: FormGroup): void;
    private updateSubtitle;
    /**
     * Creates portal for dynamic configuration of formatter value.
     * @returns ComponentPortal
     */
    private createFormatterConfigurator;
    private updateAvailableFormatters;
    private subscribeToFormattersRegistry;
    private handleFormattersUpdate;
    /**
     * Fallback for table,
     *
     * nothing should go wrong, but in case "FORMATTERS_REGISTRY" is lost, get table registry
     */
    private get formattersRegistry();
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<PresentationConfigurationComponent, [null, null, null, { optional: true; }, null]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<PresentationConfigurationComponent, "nui-table-column-presentation-configuration", never, { "formatter": { "alias": "formatter"; "required": false; }; "formatters": { "alias": "formatters"; "required": false; }; "dataFieldIds": { "alias": "dataFieldIds"; "required": false; }; "dataFields": { "alias": "dataFields"; "required": false; }; }, { "formReady": "formReady"; "formDestroy": "formDestroy"; }, never, never, false, never>;
}
