import { type Ref } from 'vue';
import type { DataTableProps, TableItem } from '@/types/componentTypes/DataTableTypes';
/**
 * Component props - using proper types from DataTableTypes
 */
interface Props extends Omit<DataTableProps, 'routes' | 'filters'> {
    routes?: Record<string, string> | ((item: TableItem) => Record<string, string>);
    enableGroupDelete?: boolean;
    filters?: Record<string, any>;
    /** Load next page when scrolling near the bottom (requires showPagination) */
    enableInfiniteScroll?: boolean;
}
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<Props, {
    fetchData: (queryParams?: Record<string, unknown>) => Promise<void>;
    getItems: () => {
        [x: string]: unknown;
        id?: string | number;
    }[];
    getSelectedItems: () => TableItem[];
    clearSelection: () => void;
    groupedItems: Ref<{
        groupKey: string | number;
        groupLabel: string;
        items: any[];
        isExpanded: boolean;
        count: number;
    }[], {
        groupKey: string | number;
        groupLabel: string;
        items: any[];
        isExpanded: boolean;
        count: number;
    }[]>;
    toggleGroup: (groupKey: string | number) => void;
    expandAllGroups: () => void;
    collapseAllGroups: () => void;
    formModel: Ref<Record<string, any>, Record<string, any>>;
    getFilters: () => Record<string, any>;
    setCriteria: (criteria: Record<string, any>) => void;
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
    "update:selectedItems": (items: TableItem[]) => any;
    "selection-change": (items: TableItem[]) => any;
}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{
    "onUpdate:selectedItems"?: (items: TableItem[]) => any;
    "onSelection-change"?: (items: TableItem[]) => any;
}>, {
    items: TableItem[];
    selectable: boolean;
    autoFetch: boolean;
    showPagination: boolean;
    showRefreshButton: boolean;
    globalFetch: boolean;
    multiSelect: boolean;
    selectedItems: TableItem[];
    uniqueKey: string | ((item: TableItem) => string | number);
    pageSize: number;
    defaultExpanded: boolean;
    dateWithTimezone: boolean;
    bulkMode: boolean;
    enableTextTruncation: boolean;
    maxTextLength: number;
    inlineFilter: boolean;
    enableExport: boolean;
    exportUrl: string;
    exportFileName: string;
    enableInfiniteScroll: boolean;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
    'inline-filter-actions'?: (props: {
        applyFilter: () => void;
        resetFilter: () => void;
        hasActiveFilters: boolean;
        filterModel: Record<string, any>;
    }) => any;
}>;
export default _default;
type __VLS_WithSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
//# sourceMappingURL=CustomDataTableV2.vue.d.ts.map