import { Ref } from 'vue';
import { DataListColumn, DataListColumnVisibility, DataListRow, DataListSortState } from './DataList.model';
import { DraggableVisibilityMenuItem } from '../DraggableVisibilityMenu';
type DataListSettingsStore = {
    getColumnOrder: (key: string) => string[] | null;
    getColumnVisibility: (key: string) => DataListColumnVisibility[] | null;
    getColumnWidths: (key: string) => Array<{
        key: string;
        width: number;
    }> | null;
    setSort: (key: string, payload: {
        prop: string;
        order: DataListSortState['order'];
    }) => void;
    clearSort: (key: string) => void;
    setColumnOrder: (key: string, order: string[]) => void;
    clearColumnOrder: (key: string) => void;
    setColumnVisibility: (key: string, visibility: DataListColumnVisibility[]) => void;
    clearColumnVisibility: (key: string) => void;
    setPerPage: (key: string, perPage: number) => void;
    clearPerPage: (key: string) => void;
    setDataListSelection: (key: string, rows: DataListRow[]) => void;
    clearDataListSelection: (key: string) => void;
    setDataListSelectionPanelOpen: (key: string, isOpen: boolean) => void;
    clearColumnWidths: (key: string) => void;
};
type DataListPreferenceProps = {
    preferencesKey: string;
    columns: DataListColumn[];
    pageSizes: number[];
    perPage: number;
};
type UseDataListPreferencesOptions = {
    props: DataListPreferenceProps;
    settingsStore: DataListSettingsStore | null;
    t: (key: string) => string;
    preferencesStateKey: Ref<string>;
    sortState: Ref<DataListSortState>;
    orderedColumns: Ref<DataListColumn[]>;
    visibleColumns: Ref<DataListColumn[]>;
    setColumnOrder: (order: string[]) => void;
    setColumnsVisibility: (visibility: DataListColumnVisibility[]) => void;
    selectionStateKey: Ref<string>;
    selectedRows: Ref<DataListRow[]>;
    selectedCount: Ref<number>;
    selectionPanelOpen: Ref<boolean>;
    onResetColumnWidths: () => void;
};
/**
 * Manages DataList preference persistence and column settings menu state/actions.
 */
export declare const useDataListPreferences: ({ props, settingsStore, t, preferencesStateKey, sortState, orderedColumns, visibleColumns, setColumnOrder, setColumnsVisibility, selectionStateKey, selectedRows, selectedCount, selectionPanelOpen, onResetColumnWidths, }: UseDataListPreferencesOptions) => {
    columnMenuItems: import('vue').ComputedRef<DraggableVisibilityMenuItem[]>;
    hasResettableColumnPreferences: import('vue').ComputedRef<boolean>;
    areAllColumnsVisible: import('vue').ComputedRef<boolean>;
    allVisibilityToggleTooltip: import('vue').ComputedRef<string>;
    handleColumnMenuUpdate: (items: DraggableVisibilityMenuItem[]) => void;
    toggleAllColumnsVisibility: () => void;
    resetColumnPreferences: (closeMenu?: () => void) => void;
    setSelectionPanelOpen: (isOpen: boolean) => void;
};
export {};
