import { IDataFetcher, IDataTableQuery } from '../../services/api/api.models';
import { ISort } from '../../types/query';
import { IAction, ICellProperty, ITable, ITableOptions } from './models/table';
import { Column, IColumnOption } from './models/column';
import { ROW_SELECTION } from './constants';

export interface IActindoListProps<T extends object = object> extends ITableOptions<T> {
    data: T[] | IDataFetcher<T>;
    columns: IColumnOption<any, T>[];
    /** Don't show global search input */
    hideGlobalSearch?: boolean;
    createActions?: IAction<T>[] | boolean;
    createBtnCaption?: string;
    canReorderRows?: boolean;
    tableName?: string;
    readonly?: boolean;
    isLoading?: boolean;
    freeze?: boolean;
    /** Should show cursor pointer on row */
    isRowClickable?: boolean;
    loadingRows?: number;
    hideRemove?: boolean;
    undeletableProperty?: string;
    selectedProperty?: string;
    minRowCount?: number;
    rowHeight?: string;
    minRowHeight?: string;
    /** Don't show pagination */
    hidePagination?: boolean;
    canReorderHeaders?: boolean;
    hideNoData?: boolean;
    hideNoDataTitle?: boolean;
    hideNoDataDescription?: boolean;
    hideNoDataComment?: boolean;
    resizable?: boolean;
    virtualScroll?: boolean;
}
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 onRemove?: (removedRow: ICellProperty<Record<string, any>, Record<string, any>, string>) => any;
        readonly "onClicked-row"?: (selectedRow: T, rowIndex: number) => any;
        readonly "onDbl-clicked-row"?: (selectedRow: T, rowIndex: number) => any;
        readonly "onUpdate:data"?: (newRows: T[]) => any;
        readonly onRefresh?: () => any;
        readonly onRecalculate?: (query: IDataTableQuery) => any;
    } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, never>) & IActindoListProps<T>, keyof import('vue').VNodeProps | keyof import('vue').AllowedComponentProps>> & {} & (import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps);
    expose(exposed: import('vue').ShallowUnwrapRef<{
        table: ITable<T>;
        reloadTable: () => void;
    }>): void;
    attrs: any;
    slots: ReturnType<() => Readonly<{
        [slotName: `header-${string}`]: (props: {
            name: string;
            column: Column;
            headerValue: string;
            isLoading: boolean;
            readonly: boolean;
        }) => void;
        [slotName: `cell-${string}`]: (props: {
            row: T;
            rowIndex: number;
            cell: Column;
            cellValue: string;
            isLoading: boolean;
            readonly: boolean;
        }) => void;
        title?: () => void;
        actions?: (props: {
            readonly: boolean;
        }) => void;
        cellActions?: (props: {
            row: T;
            rowIndex: number;
            cell: Column;
            cellValue: string;
            isLoading: boolean;
            readonly: boolean;
        }) => void;
        modals?: () => void;
        "no-data-title"?: () => void;
        "no-data-description"?: () => void;
        "no-data-comment"?: () => void;
        list?: (props: {
            headers: Column[];
            rows: T[];
            sorters: ISort[];
            rowSelection: ROW_SELECTION;
        }) => void;
        rowDisabled?: (props: {
            isLoading: boolean;
            readonly: boolean;
        }) => void;
        row?: (props: {
            colspan: number;
            headers: Column[];
            rowIndex: number;
            row: T;
            rowSelection: ROW_SELECTION;
            isAllSelected: boolean;
            isSelected: boolean;
            singleSelection: (value: unknown) => void;
            changeSelection: (value: unknown) => void;
            isLoading: boolean;
            readonly: boolean;
        }) => void;
    }> & {
        [slotName: `header-${string}`]: (props: {
            name: string;
            column: Column;
            headerValue: string;
            isLoading: boolean;
            readonly: boolean;
        }) => void;
        [slotName: `cell-${string}`]: (props: {
            row: T;
            rowIndex: number;
            cell: Column;
            cellValue: string;
            isLoading: boolean;
            readonly: boolean;
        }) => void;
        title?: () => void;
        actions?: (props: {
            readonly: boolean;
        }) => void;
        cellActions?: (props: {
            row: T;
            rowIndex: number;
            cell: Column;
            cellValue: string;
            isLoading: boolean;
            readonly: boolean;
        }) => void;
        modals?: () => void;
        "no-data-title"?: () => void;
        "no-data-description"?: () => void;
        "no-data-comment"?: () => void;
        list?: (props: {
            headers: Column[];
            rows: T[];
            sorters: ISort[];
            rowSelection: ROW_SELECTION;
        }) => void;
        rowDisabled?: (props: {
            isLoading: boolean;
            readonly: boolean;
        }) => void;
        row?: (props: {
            colspan: number;
            headers: Column[];
            rowIndex: number;
            row: T;
            rowSelection: ROW_SELECTION;
            isAllSelected: boolean;
            isSelected: boolean;
            singleSelection: (value: unknown) => void;
            changeSelection: (value: unknown) => void;
            isLoading: boolean;
            readonly: boolean;
        }) => void;
    }>;
    emit: {
        (event: "create", eventName: string): void;
        (event: "remove", removedRow: ICellProperty): void;
        (event: "clicked-row", selectedRow: T, rowIndex: number): void;
        (event: "dbl-clicked-row", selectedRow: T, rowIndex: number): void;
        (event: "update:data", newRows: T[]): void;
        (event: "refresh"): void;
        (event: "recalculate", query: IDataTableQuery): 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];
} & {};
