import { CollectionState, FiltersMap, SelectState, TaskState, TypedEmitter, WixPatternsContainer } from '@wix/bex-core';
import { ToolbarCollectionState } from './ToolbarCollectionState';
import { Column } from '../model';
import type { CustomColumnsDragAndDrop } from '../components/CustomColumns/CustomColumnsDragAndDrop';
import { CustomColumnsHistoryState } from './CustomColumnsHistoryState';
type StoredColumn = {
    id?: string;
    name?: string;
    isSelected?: boolean;
} | null | undefined;
export interface CustomColumnsStateParams<T, F extends FiltersMap> {
    readonly table: ToolbarCollectionState<T, F>;
    readonly container: WixPatternsContainer;
    readonly dragAndDrop?: typeof CustomColumnsDragAndDrop;
    readonly modalsContainerRef: {
        current: HTMLElement | null | undefined;
    };
}
export type CustomColumnsActionName = 'visibility' | 'reorder';
export declare class CustomColumnsState<T, F extends FiltersMap> {
    readonly table: ToolbarCollectionState<T, F>;
    readonly container: WixPatternsContainer;
    readonly columnsCollection: CollectionState<Column, {}>;
    readonly dragAndDrop: import("./CustomColumnsDragAndDropState").CustomColumnsDragAndDropState<T, F> | undefined;
    readonly customColumnsHistory: CustomColumnsHistoryState | null;
    onColumnClick?: (column: Column, checked: boolean) => unknown;
    _didFirstColumnsMerge?: boolean;
    _performedCustomColumnsActions: Map<CustomColumnsActionName, boolean>;
    readonly initTask: TaskState<unknown>;
    _touched: boolean;
    searchValue: string;
    readonly select: SelectState<{
        id: string;
    }>;
    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;
    }[];
    onColumnCheckboxToggle: (column: Column) => void;
    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 filteredColumns(): Column[];
    setSearchValue: (value: string) => void;
}
export {};
//# sourceMappingURL=CustomColumnsState.d.ts.map