import { MaybeRef, MaybeRefOrGetter, Ref } from 'vue';
import { ItemTrackerReturn, TableDetailsReturn, TableField, TableFieldRaw, TableHeadClickedEventObject, TablePrimaryKey, TableRowEventObject } from '../types/TableTypes';
import { StackedProps } from '../utils/tableUtils';
export declare const useTableFieldsMapper: <Item>({ fields, items, stackedProps, }: {
    fields: MaybeRefOrGetter<readonly TableFieldRaw<Item>[]>;
    items: MaybeRefOrGetter<readonly Item[]>;
    stackedProps: {
        stacked: MaybeRefOrGetter<StackedProps["stacked"]>;
        labelStacked: MaybeRefOrGetter<StackedProps["labelStacked"]>;
    };
}) => {
    total: import('vue').ComputedRef<number>;
    showHeaders: import('vue').ComputedRef<boolean>;
    fields: import('vue').ComputedRef<TableField[]>;
};
export declare const useItemTracker: <Item>({ allItems, selectedItems, primaryKey, }: {
    allItems: MaybeRefOrGetter<readonly Item[]>;
    selectedItems: Ref<readonly unknown[]>;
    primaryKey?: MaybeRef<TablePrimaryKey<Item> | undefined>;
}) => ItemTrackerReturn<Item>;
export declare const useItemExpansion: <Item>({ allItems, primaryKey, expandedItems, }: {
    allItems: MaybeRefOrGetter<readonly Item[]>;
    primaryKey: MaybeRef<TablePrimaryKey<Item> | undefined>;
    expandedItems: Ref<readonly unknown[]>;
}) => TableDetailsReturn<Item>;
export declare const useTableKeyboardNavigation: <Item>({ items, id, }: {
    items: MaybeRefOrGetter<readonly Item[]>;
    id: MaybeRefOrGetter<string>;
}, events: {
    onHeadClicked: (obj: TableHeadClickedEventObject<Item, Readonly<KeyboardEvent> | Readonly<MouseEvent>>) => void;
    onRowClicked: (obj: TableRowEventObject<Item, Readonly<KeyboardEvent> | Readonly<MouseEvent>>) => void;
    onRowMiddleClicked: (obj: TableRowEventObject<Item>) => void;
}) => {
    shouldHeaderBeFocusable: (field: TableField) => boolean;
    headerClicked: (field: TableField, event: Readonly<MouseEvent> | Readonly<KeyboardEvent>, isFooter?: boolean) => void;
    handleHeaderKeydown: (field: TableField, event: KeyboardEvent, isFooter?: boolean) => void;
    shouldRowBeFocusable: import('vue').ComputedRef<boolean>;
    handleRowKeydown: (item: Item, itemIndex: number, event: KeyboardEvent) => void;
    handleMiddleClick: (item: Item, itemIndex: number, event: MouseEvent) => void;
};
