import { ColDef, GridApi, IRowNode } from 'ag-grid-community';
import { CsvExportParams } from 'ag-grid-community';
import { ColDefT, GridBaseRow } from '../components';
export type GridFilterExternal<TData extends GridBaseRow> = (data: TData, rowNode: IRowNode) => boolean;
export interface AutoSizeColumnsProps {
    skipHeader?: boolean;
    colIds?: Set<string> | string[];
    userSizedColIds?: Set<string>;
    includeFlex?: boolean;
}
export type AutoSizeColumnsResult = {
    width: number;
} | null;
export interface GridContextType<TData extends GridBaseRow> {
    gridReady: boolean;
    gridRenderState: () => null | 'empty' | 'rows-visible';
    getColDef: (colId?: string) => ColDef | undefined;
    getColumns: (filter?: keyof ColDef | ((r: ColDef) => boolean | undefined | null | number | string)) => ColDefT<TData, any>[];
    getColumnIds: (filter?: keyof ColDef | ((r: ColDef) => boolean | undefined | null | number | string)) => string[];
    setApis: (gridApi: GridApi | undefined, hasExternallySelectedItems: boolean, dataTestId?: string) => void;
    prePopupOps: () => void;
    postPopupOps: () => void;
    setQuickFilter: (quickFilter: string) => void;
    editingCells: () => boolean;
    getSelectedRows: <T extends GridBaseRow>() => T[];
    getFilteredSelectedRows: <T extends GridBaseRow>() => T[];
    getSelectedRowIds: () => number[];
    getFilteredSelectedRowIds: () => number[];
    selectRowsDiff: (updateFn: () => Promise<any>) => Promise<void>;
    selectRowsWithFlashDiff: (updateFn: () => Promise<any>) => Promise<void>;
    selectRowsById: (rowIds?: number[]) => void;
    selectRowsByIdWithFlash: (rowIds?: number[]) => void;
    flashRows: (rowIds?: number[]) => void;
    flashRowsDiff: (updateFn: () => Promise<any>) => Promise<void>;
    focusByRowById: (rowId: number, ifNoCellFocused?: boolean) => void;
    ensureRowVisible: (id: number | string) => boolean;
    ensureSelectedRowIsVisible: () => void;
    getFirstRowId: () => number;
    autoSizeColumns: (props?: AutoSizeColumnsProps) => AutoSizeColumnsResult;
    sizeColumnsToFit: () => void;
    cancelEdit: () => void;
    startCellEditing: ({ rowId, colId }: {
        rowId: number;
        colId: string;
    }) => Promise<void>;
    stopEditing: () => void;
    updatingCells: (props: {
        selectedRows: GridBaseRow[];
        field?: string;
    }, fnUpdate: (selectedRows: any[]) => Promise<boolean>, setSaving?: (saving: boolean) => void, tabDirection?: 1 | 0 | -1) => Promise<boolean>;
    redrawRows: (rowNodes?: IRowNode[]) => void;
    externallySelectedItemsAreInSync: boolean;
    setExternallySelectedItemsAreInSync: (inSync: boolean) => void;
    waitForExternallySelectedItemsToBeInSync: () => Promise<void>;
    addExternalFilter: (filter: GridFilterExternal<TData>) => void;
    removeExternalFilter: (filter: GridFilterExternal<TData>) => void;
    isExternalFilterPresent: () => boolean;
    doesExternalFilterPass: (node: IRowNode) => boolean;
    invisibleColumnIds: string[] | undefined;
    setInvisibleColumnIds: (colIds: string[]) => void;
    downloadCsv: (csvExportParams?: CsvExportParams) => void;
    setOnCellEditingComplete: (callback: (() => void) | undefined) => void;
    showNoRowsOverlay: () => void;
}
export declare const GridContext: import("react").Context<GridContextType<any>>;
export declare const useGridContext: <TData extends GridBaseRow>() => GridContextType<TData>;
