import { GridColumn } from '../types';
interface UseAdvancedGridOptions<T> {
    initialData: T[];
    columns: GridColumn<T>[];
    features?: {
        sorting?: boolean;
        filtering?: boolean;
        pagination?: {
            pageSize?: number;
            showPageSizeSelector?: boolean;
        };
        editing?: boolean;
        selection?: boolean;
        globalSearch?: boolean;
    };
    onRowSelect?: (selectedRows: T[]) => void;
    onCellEdit?: (rowIndex: number, field: string, value: any) => void;
    onRowAction?: (action: string, rowData: T, rowIndex: number) => void;
}
interface ChangeTracker<T> {
    created: T[];
    modified: Array<{
        original: T;
        current: T;
        changedFields: string[];
    }>;
    deleted: T[];
}
interface UseAdvancedGridReturn<T> {
    data: T[];
    processedData: T[];
    totalCount: number;
    filteredCount: number;
    addRow: (newRow?: Partial<T>) => void;
    deleteRow: (itemId: string | number) => void;
    deleteRows: (itemIds: (string | number)[]) => void;
    updateRow: (itemId: string | number, updates: Partial<T>) => void;
    updateRows: (updates: {
        id: string | number;
        data: Partial<T>;
    }[]) => void;
    selectedRows: Set<string>;
    isAllSelected: boolean;
    isIndeterminate: boolean;
    selectRow: (rowId: string, checked: boolean) => void;
    selectAll: (checked: boolean) => void;
    clearSelection: () => void;
    getSelectedData: () => T[];
    getSelectedIds: () => (string | number)[];
    editingCell: {
        rowId: string;
        field: string;
    } | null;
    recentlySavedCells: Set<string>;
    singleClickEdit: boolean;
    setSingleClickEdit: (enabled: boolean) => void;
    startEdit: (rowId: string, field: string) => void;
    cancelEdit: () => void;
    handleRowAction: (action: string, rowData: T, rowIndex: number) => void;
    changes: ChangeTracker<T>;
    hasChanges: boolean;
    getChanges: () => ChangeTracker<T>;
    getChangesSummary: () => {
        created: number;
        modified: number;
        deleted: number;
    };
    commitChanges: () => void;
    resetChanges: () => void;
    isRowCreated: (itemId: string | number) => boolean;
    isRowModified: (itemId: string | number) => boolean;
    isRowDeleted: (itemId: string | number) => boolean;
    getModifiedFields: (itemId: string | number) => string[];
    validationErrors: Record<string, string>;
    clearValidationError: (rowId: string, field: string) => void;
    clearAllValidationErrors: () => void;
    hasValidationErrors: boolean;
    validateCell: (rowId: string, field: string, value: any, eventType: 'realtime' | 'blur' | 'submit') => string | null;
    validateRow: (itemId: string | number, eventType: 'submit') => Record<string, string>;
    handleCellValueChange: (rowId: string, field: string, value: any) => string | null;
    tableProps: {
        data: T[];
        columns: GridColumn<T>[];
        features: any;
        onRowSelect?: (selectedRows: T[]) => void;
        onCellEdit?: (rowIndex: number, field: string, value: any) => void;
        onRowAction?: (action: string, rowData: T, rowIndex: number) => void;
        editingCell: {
            rowId: string;
            field: string;
        } | null;
        recentlySavedCells: Set<string>;
        singleClickEdit: boolean;
        onEditStart: (rowId: string, field: string) => void;
        onEditCancel: () => void;
        onCellEditComplete: (rowId: string, field: string, value: string | number) => void;
        isRowCreated: (itemId: string | number) => boolean;
        isRowModified: (itemId: string | number) => boolean;
        getModifiedFields: (itemId: string | number) => string[];
        validationErrors: Record<string, string>;
        validateCell: (rowId: string, field: string, value: any, eventType: 'realtime' | 'blur' | 'submit') => string | null;
        onCellValueChange: (rowId: string, field: string, value: any) => string | null;
    };
}
export declare function useGridAPI<T extends {
    id: string | number;
}>(options: UseAdvancedGridOptions<T>): UseAdvancedGridReturn<T>;
export {};
//# sourceMappingURL=use-advanced-grid.d.ts.map