import type { AbstractModel, DetachedModelConstructor } from '@vaadin/hilla-lit-form';
import { type GridElement, type GridProps } from '@vaadin/react-components/Grid.js';
import { type ComponentType, type ForwardedRef, type JSX } from 'react';
import { type ColumnOptions } from './autogrid-columns.js';
import type { ListService } from './crud.js';
import { type ItemCounts } from './data-provider.js';
import { type HeaderFilterRendererProps } from './header-filter';
import type FilterUnion from './types/com/vaadin/hilla/crud/filter/FilterUnion.js';
export interface AutoGridRef<TItem = any> {
    grid: GridElement<TItem> | null;
    refresh(): void;
}
interface AutoGridOwnProps<TItem> {
    service: ListService<TItem>;
    model: DetachedModelConstructor<AbstractModel<TItem>>;
    itemIdProperty?: string;
    experimentalFilter?: FilterUnion;
    visibleColumns?: string[];
    hiddenColumns?: string[];
    noHeaderFilters?: boolean;
    customColumns?: JSX.Element[];
    columnOptions?: Record<string, ColumnOptions>;
    rowNumbers?: boolean;
    totalCount?: boolean;
    filteredCount?: boolean;
    footerCountRenderer?: ComponentType<ItemCounts>;
}
export type AutoGridProps<TItem> = GridProps<TItem> & Readonly<AutoGridOwnProps<TItem>>;
declare function AutoGridInner<TItem>({ service, model, itemIdProperty, experimentalFilter, visibleColumns, hiddenColumns, noHeaderFilters, customColumns, columnOptions, rowNumbers, totalCount, filteredCount, footerCountRenderer, ...gridProps }: AutoGridProps<TItem>, ref: ForwardedRef<AutoGridRef<TItem>>): JSX.Element;
type AutoGrid = <TItem>(props: AutoGridProps<TItem> & {
    ref?: ForwardedRef<AutoGridRef<TItem>>;
}) => ReturnType<typeof AutoGridInner>;
export declare const AutoGrid: AutoGrid;
export type { ColumnOptions, HeaderFilterRendererProps };
