import { FiltersMap, TaskState, TypedEmitter, WixPatternsContainer } from '@wix/bex-core';
import { ViewsState } from './ViewsState';
import { ViewsProps } from '../index';
import { AllItemsViewProps, Category, PrivateView, View, ViewType } from '../model';
import { ToolbarCollectionState } from './ToolbarCollectionState';
import { CollectionViewsStateBIReporter } from './CollectionViewsStateBIReporter';
import { CollectionViewsQueryCompareHelper } from './CollectionViewsQueryCompareHelper';
export interface CollectionViewsStateParams<T, F extends FiltersMap> {
    presets?: Category<F>[];
    container: WixPatternsContainer;
    table: ToolbarCollectionState<T, F>;
    allItemsViewProps?: AllItemsViewProps<F>;
    onDeleteView?: (view: View<F>) => void | Promise<void>;
    onSaveViewChanges?: (view: View<F>) => void | Promise<void>;
    onSaveView?: (view: View<F>) => void | Promise<void>;
    onRenameView?: (view: View<F>) => void | Promise<void>;
    onSetAsDefaultView?: (view: View<F>, isDefault: boolean) => void | Promise<void>;
    learnMoreLink?: ViewsProps<F>['learnMoreLink'];
    viewNamePlaceholder?: ViewsProps<F>['viewNamePlaceholder'];
}
export declare class CollectionViewsState<T, F extends FiltersMap> {
    readonly views: ViewsState<F>;
    readonly table: ToolbarCollectionState<T, F>;
    readonly initTask: TaskState<unknown>;
    readonly emitter: TypedEmitter<{
        openManageViewPopoverMenu: () => unknown;
    }>;
    readonly queryCompareHelper: CollectionViewsQueryCompareHelper<T, F>;
    readonly onDeleteView?: (view: View<F>) => void | Promise<void>;
    readonly onSaveViewChanges?: (view: View<F>) => void | Promise<void>;
    readonly onSaveView?: (view: View<F>) => void | Promise<void>;
    readonly onRenameView?: (view: View<F>) => void | Promise<void>;
    readonly onSetAsDefaultView?: (view: View<F>, isDefault: boolean) => void | Promise<void>;
    readonly learnMoreLink?: string;
    readonly viewNamePlaceholder?: string;
    viewsStateBIReporter: CollectionViewsStateBIReporter<T, F>;
    getLayout(): ViewType | undefined;
    constructor(params: CollectionViewsStateParams<T, F>);
    get isViewChanged(): boolean;
    get _doNotWaitForViewsExperimentEnabled(): boolean;
    init(): () => void;
    _selectInitialView(items: PrivateView<F>[]): void | boolean;
    private _subscribeOnViewAction;
    private _subscribeOnSelectView;
    _onSelectViewAndRefresh(needFiltersReset?: boolean): void;
    get currentViewColumns(): {
        id: string;
        isSelected: boolean;
    }[] | null;
    get currentViewColumnsOrDefaultColumns(): {
        id: string;
        isSelected: boolean;
    }[];
    _setSelectedViewToCollectionQuery(): void;
    deleteView(view?: PrivateView<F>): Promise<void>;
    saveViewChanges(): Promise<void>;
    sendSaveNewViewSelectedBI(): void;
    saveNewView(name: string): Promise<void>;
    sendRenameViewSelectedBI(): void;
    renameView(name: string): Promise<void>;
    setAsDefaultView(): Promise<void>;
}
//# sourceMappingURL=CollectionViewsState.d.ts.map