import { FiltersMap, TaskState, TypedEmitter } from '@wix/bex-core';
import { ToolbarCollectionState } from './ToolbarCollectionState';
import { Column } from '../model';
import type { CustomColumnsDragAndDrop } from '../components/CustomColumns/CustomColumnsDragAndDrop';
import { CustomColumnsHistoryState } from './CustomColumnsHistoryState';
import type { CustomColumnsDragAndDropState } from './CustomColumnsDragAndDropState';
import type { CollectionDataExtensionState } from '../components/DataExtension';
import { CustomColumnsPanelStateBase } from './CustomColumnsPanelStateBase';
export type { CustomColumnsDragAndDropState };
export type { CollectionDataExtensionState };
export type CustomColumnsPanelState<T = unknown, F extends FiltersMap = FiltersMap> = CustomColumnsPanelStateBase<T, F>;
type StoredColumn = {
    id?: string;
    name?: string;
    isSelected?: boolean;
} | null | undefined;
export declare const CUSTOM_COLUMNS_KEY = "custom-columns";
export declare const SPREADSHEET_CUSTOM_COLUMNS_KEY = "spreadsheet-custom-columns";
export interface CustomColumnsStateParams<T, F extends FiltersMap> {
    readonly table: ToolbarCollectionState<T, F>;
    readonly container: import('@wix/bex-core').WixPatternsContainer;
    readonly dragAndDrop?: typeof CustomColumnsDragAndDrop;
    readonly modalsContainerRef: {
        current: HTMLElement | null | undefined;
    };
}
export type CustomColumnsActionName = 'visibility' | 'reorder';
export declare class CustomColumnsState<T, F extends FiltersMap> extends CustomColumnsPanelStateBase<T, F> {
    readonly table: ToolbarCollectionState<T, F>;
    readonly dragAndDrop: CustomColumnsDragAndDropState<T, F> | undefined;
    readonly customColumnsHistory: CustomColumnsHistoryState | null;
    _didFirstColumnsMerge?: boolean;
    _performedCustomColumnsActions: Map<CustomColumnsActionName, boolean>;
    readonly initTask: TaskState<unknown>;
    _touched: boolean;
    readonly events: TypedEmitter<{
        beforeInitialFetch: () => void;
    }>;
    constructor(params: CustomColumnsStateParams<T, F>);
    get orderedColumns(): Column[];
    get selectedOrderedColumns(): Column[];
    persistCustomColumns(): Promise<void>;
    private registerSelectedColumnChange;
    mergeNewColumns(): {
        id: string;
        isSelected: boolean;
    }[];
    getStickyColumnsCount({ stickyColumns }: {
        stickyColumns: number;
    }): number;
    get toSelectedColumns(): {
        id: string;
        isSelected: boolean;
    }[];
    get selectionChanged(): boolean;
    init(): () => void;
    _getStoredCustomColumns(): Promise<StoredColumn[] | null>;
    _tableInit(): void;
    _fetchFromStorage(): Promise<void>;
    customizeColumnsInSidePanelBi({ actionName, }: {
        actionName: CustomColumnsActionName;
    }): void;
    get showFieldTypeIcons(): boolean;
    get collectionDataExtension(): CollectionDataExtensionState<T, F> | null;
    get sidePanelTransition(): import("@wix/bex-core").TransitionState<string>;
    onClose(): void;
}
//# sourceMappingURL=CustomColumnsState.d.ts.map