import { DataListColumn, DataListColumnVisibility, DataListRow, DataListRowClassNameFn, DataListSortOrder, DataListSortState } from './DataList.model';
import { DropdownItem } from '../Dropdown/Dropdown.model';
/**
 * Subset of DataList props used to manage table state in this composable.
 */
type DataListProps = {
    columns: DataListColumn[];
    columnVisibility?: DataListColumnVisibility[] | null;
    columnOrder?: string[] | null;
    sortProp?: string;
    sortOrder?: DataListSortOrder;
    data: DataListRow[];
    rowKey: string | ((row: DataListRow) => string | number);
    selectable: boolean;
    rowClassName: DataListRowClassNameFn | string;
    total: number;
    currentPage: number;
    perPage: number;
    selectionActions?: DropdownItem[] | ((rows: DataListRow[]) => DropdownItem[]) | null;
    contextMenuItems?: DropdownItem[] | ((row: DataListRow) => DropdownItem[]) | null;
};
/**
 * Local emit signature for DataList update events.
 */
type EmitFn = (...args: any[]) => void;
/**
 * Core DataList behavior composable.
 * Handles sorting, column visibility/order, row selection, pagination events,
 * and context-menu state.
 */
export declare const useDataList: (props: DataListProps, emit: EmitFn, options?: {
    initialSort?: DataListSortState | null;
    initialColumnOrder?: string[] | null;
    initialColumnVisibility?: DataListColumnVisibility[] | null;
}) => {
    hasData: import('vue').ComputedRef<boolean>;
    sortState: import('vue').Ref<{
        column: {
            key: string;
            label: string;
            sortable?: boolean | undefined;
            minWidth?: number | undefined;
            maxWidth?: number | undefined;
            width?: number | string | undefined;
            resizable?: boolean | undefined;
            align?: "left" | "center" | "right" | undefined;
            headerClassName?: string | undefined;
            className?: string | undefined;
            visible?: boolean | undefined;
            noWrap?: boolean | undefined;
            type?: string | undefined;
            valueKey?: string | undefined;
            format?: string | ((value: unknown) => string) | undefined;
            copyable?: boolean | undefined;
            trueLabel?: string | undefined;
            falseLabel?: string | undefined;
            prefix?: string | undefined;
            maxChars?: number | undefined;
            disabled?: boolean | ((row: DataListRow) => boolean) | undefined;
            onChange?: ((value: unknown, row: DataListRow, column: DataListColumn, rowIndex: number) => void) | undefined;
        };
        order: DataListSortOrder;
    }, DataListSortState | {
        column: {
            key: string;
            label: string;
            sortable?: boolean | undefined;
            minWidth?: number | undefined;
            maxWidth?: number | undefined;
            width?: number | string | undefined;
            resizable?: boolean | undefined;
            align?: "left" | "center" | "right" | undefined;
            headerClassName?: string | undefined;
            className?: string | undefined;
            visible?: boolean | undefined;
            noWrap?: boolean | undefined;
            type?: string | undefined;
            valueKey?: string | undefined;
            format?: string | ((value: unknown) => string) | undefined;
            copyable?: boolean | undefined;
            trueLabel?: string | undefined;
            falseLabel?: string | undefined;
            prefix?: string | undefined;
            maxChars?: number | undefined;
            disabled?: boolean | ((row: DataListRow) => boolean) | undefined;
            onChange?: ((value: unknown, row: DataListRow, column: DataListColumn, rowIndex: number) => void) | undefined;
        };
        order: DataListSortOrder;
    }>;
    visibleColumns: import('vue').ComputedRef<DataListColumn[]>;
    orderedColumns: import('vue').ComputedRef<DataListColumn[]>;
    hasColumnMenu: import('vue').ComputedRef<boolean>;
    setColumnOrder: (nextOrder: string[]) => void;
    setColumnsVisibility: (nextVisibility: DataListColumnVisibility[]) => void;
    toggleColumn: (columnKey: string) => void;
    columnMenuItems: import('vue').ComputedRef<DropdownItem[]>;
    rowKeyValue: (row: DataListRow, index: number) => string | number;
    selectedKeys: import('vue').Ref<Set<string | number> & Omit<Set<string | number>, keyof Set<any>>, Set<string | number> | (Set<string | number> & Omit<Set<string | number>, keyof Set<any>>)>;
    selectedRows: import('vue').ComputedRef<DataListRow[]>;
    selectedCount: import('vue').ComputedRef<number>;
    hasSelection: import('vue').ComputedRef<boolean>;
    allSelected: import('vue').ComputedRef<boolean>;
    isRowSelected: (row: DataListRow, index?: number) => boolean;
    setRowSelection: (row: DataListRow, checked: boolean, index?: number) => void;
    toggleRowSelection: (row: DataListRow, index?: number) => void;
    setAllSelection: (checked: boolean) => void;
    clearAllSelection: () => void;
    deselectSelectedRow: (row: DataListRow) => void;
    replaceSelection: (nextRows: DataListRow[], options?: {
        emit?: boolean;
    }) => void;
    toggleAllSelection: () => void;
    rangeLabel: import('vue').ComputedRef<string>;
    handleHeaderClick: (column: DataListColumn) => void;
    isSortedColumn: (column: DataListColumn) => boolean;
    resolveRowClassName: (row: DataListRow, rowIndex: number) => string | Record<string, boolean> | string[] | undefined;
    onSizeChange: (size: number) => void;
    onCurrentChange: (page: number) => void;
    handleContextAction: (item: DropdownItem) => void;
    selectionActionItems: import('vue').ComputedRef<DropdownItem[]>;
    onRowContextMenu: (event: MouseEvent, row: DataListRow) => void;
    closeContextMenu: () => void;
    buildContextMenuItems: (row: DataListRow) => DropdownItem[];
    hasRowActions: import('vue').ComputedRef<boolean>;
};
export {};
