import { Column } from '../models/column';
import { ISort } from '../../../types/query';
import { NO_DATA_TYPE, ROW_SELECTION, SORT_TYPE } from '../constants';

declare const _default: <T extends object>(__VLS_props: Awaited<typeof __VLS_setup>["props"], __VLS_ctx?: __VLS_Prettify<Pick<Awaited<typeof __VLS_setup>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
    props: __VLS_Prettify<__VLS_OmitKeepDiscriminatedUnion<(Partial<{}> & Omit<{
        readonly onCreate?: (eventName: string) => any;
        readonly "onClicked-row"?: (selectedRow: T, rowIndex: number) => any;
        readonly "onDbl-clicked-row"?: (selectedRow: T, rowIndex: number) => any;
        readonly "onUpdate-width"?: (width: number, header: Column<Record<string, any>>) => any;
        readonly "onUpdate:selected"?: (selected: T[]) => any;
        readonly "onSort-column"?: (column: Column<Record<string, any>>, triggeredByEvent?: MouseEvent) => any;
        readonly "onFilter-column"?: (column: Column<Record<string, any>>) => any;
        readonly "onUpdate:headers"?: (headers: Column<Record<string, any>>[]) => any;
        readonly "onUpdate:rows"?: (newRows: T[]) => any;
    } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, never>) & {
        isLoading?: boolean;
        headers: Column[];
        rows: T[];
        sortType?: SORT_TYPE;
        sorters: ISort[];
        rowSelection?: ROW_SELECTION;
        rowHeight?: string;
        headerRowHeight?: string;
        minRowHeight?: string;
        selected?: T[];
        transparent?: boolean;
        canReorderHeaders?: boolean;
        selectedProperty?: string;
        lockedProperty?: string;
        hideFilters?: boolean;
        resizable?: boolean;
        virtualScroll?: boolean;
        isRowClickable?: boolean;
        hideNoData?: boolean;
        hideNoDataTitle?: boolean;
        hideNoDataDescription?: boolean;
        hideNoDataComment?: boolean;
        hasCreateAction?: boolean;
        noDataType?: NO_DATA_TYPE;
        rowIdName: keyof T | string;
    }, keyof import('vue').VNodeProps | keyof import('vue').AllowedComponentProps>> & {} & (import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps);
    expose(exposed: import('vue').ShallowUnwrapRef<{
        scrollToLast: () => void;
    }>): void;
    attrs: any;
    slots: ReturnType<() => Readonly<{
        [slotName: `header-${string}`]: (props: {
            column: Column;
            headerValue: string;
        }) => void;
        [slotName: `cell-${string}`]: (props: {
            row: T;
            rowIndex: number;
            cell: Column;
            cellValue: string;
        }) => void;
        rowDisabled?: () => void;
        "no-data-title"?: () => void;
        "no-data-description"?: () => void;
        "no-data-comment"?: () => void;
        row?: (props: {
            colspan: number;
            headers: Column[];
            rowIndex: number;
            row: T;
            rowSelection: ROW_SELECTION;
            isAllSelected: boolean;
            isSelected: boolean;
            singleSelection: (value?: boolean) => void;
            changeSelection: (value?: boolean) => void;
        }) => void;
    }> & {
        [slotName: `header-${string}`]: (props: {
            column: Column;
            headerValue: string;
        }) => void;
        [slotName: `cell-${string}`]: (props: {
            row: T;
            rowIndex: number;
            cell: Column;
            cellValue: string;
        }) => void;
        rowDisabled?: () => void;
        "no-data-title"?: () => void;
        "no-data-description"?: () => void;
        "no-data-comment"?: () => void;
        row?: (props: {
            colspan: number;
            headers: Column[];
            rowIndex: number;
            row: T;
            rowSelection: ROW_SELECTION;
            isAllSelected: boolean;
            isSelected: boolean;
            singleSelection: (value?: boolean) => void;
            changeSelection: (value?: boolean) => void;
        }) => void;
    }>;
    emit: {
        (event: "update:selected", selected: T[]): void;
        (event: "create", eventName: string): void;
        (event: "clicked-row", selectedRow: T, rowIndex: number): void;
        (event: "dbl-clicked-row", selectedRow: T, rowIndex: number): void;
        (event: "sort-column", column: Column, triggeredByEvent?: MouseEvent): void;
        (event: "filter-column", column: Column): void;
        (event: "update-width", width: number, header: Column): void;
        (event: "update:headers", headers: Column[]): void;
        (event: "update:rows", newRows: T[]): void;
    };
}>) => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
    [key: string]: any;
}> & {
    __ctx?: Awaited<typeof __VLS_setup>;
};
export default _default;
type __VLS_Prettify<T> = {
    [K in keyof T]: T[K];
} & {};
