import { ApiBase } from './ApiBase';
import { ColDefWithId, GridApi } from '../GridApi';
import { SelectedCellInfo } from '../../AdaptableState/Selection/SelectedCellInfo';
import { SelectedRowInfo } from '../../AdaptableState/Selection/SelectedRowInfo';
import { CellUpdateRequest, GridCell } from '../../AdaptableState/Selection/GridCell';
import { ColumnSort } from '../../AdaptableState/Common/ColumnSort';
import { DataUpdateConfig } from '../../AdaptableState/Common/DataUpdateConfig';
import { CellHighlightInfo } from '../../AdaptableState/Common/CellHighlightInfo';
import { RowHighlightInfo } from '../../AdaptableState/Common/RowHighlightInfo';
import { ColDef, ColGroupDef, Column, ColumnState, IRowNode, RowModelType } from 'ag-grid-enterprise';
import { GridCellRange } from '../../AdaptableState/Selection/GridCellRange';
import { CellDataChangedInfo } from '../../AdaptableState/Common/CellDataChangedInfo';
import { RowsHighlightInfo } from '../../AdaptableState/Common/RowsHighlightInfo';
import { AdaptableVariant, IAdaptable } from '../../AdaptableInterfaces/IAdaptable';
import { GridInternalApi } from '../Internal/GridInternalApi';
import { TransposeConfig } from '../../AdaptableState/Common/TransposeConfig';
import { CellSummmaryInfo } from '../../types';
import { InternalState } from '../../AdaptableState/InternalState';
export declare class GridApiImpl extends ApiBase implements GridApi {
    internalApi: GridInternalApi;
    constructor(_adaptable: IAdaptable);
    getAgGridColumnDefs(): (ColDef<any, any> | ColGroupDef<any>)[];
    getVariant(): AdaptableVariant;
    getInternalState(): InternalState;
    loadGridData(dataSource: any): void;
    getGridData(): any[];
    getFilteredData(): any[];
    getVisibleData(): any[];
    updateGridData(dataRows: any[], dataUpdateConfig?: DataUpdateConfig): Promise<IRowNode[]>;
    addOrUpdateGridData(dataRows: any[], dataUpdateConfig?: DataUpdateConfig): Promise<{
        addedRows: IRowNode[];
        updatedRows: IRowNode[];
    }>;
    addGridData(dataRows: any[], dataUpdateConfig?: DataUpdateConfig): Promise<IRowNode[]>;
    undoCellEdit(cellDataChangedInfo: CellDataChangedInfo): boolean;
    deleteGridData(dataRows: any[], dataUpdateConfig?: DataUpdateConfig): Promise<IRowNode[]>;
    setCellValue(cellUpdateRequest: CellUpdateRequest): void;
    setCellValues(cellUpdateRequests: CellUpdateRequest[]): void;
    getCellSummaryInfo(): CellSummmaryInfo;
    getSelectedCellInfo(): SelectedCellInfo;
    getSelectedRowInfo(): SelectedRowInfo;
    getCellDisplayValue(primaryKeyValue: any, columnId: string): any | undefined;
    getCellRawValue(primaryKeyValue: any, columnId: string): any | undefined;
    getCellNormalisedValue(primaryKeyValue: any, columnId: string): any | undefined;
    applyFiltering(): void;
    clearFiltering(): void;
    getColumnSorts(): ColumnSort[];
    getColumnSortForColumn(columnId: string): ColumnSort | undefined;
    setAdaptableSorting(columnSorts: ColumnSort[]): void;
    clearAdaptableSorting(): void;
    selectRow(primaryKeyValue: any, clearSelection: boolean): void;
    selectRows(primaryKeyValues: any[], clearSelection: boolean): void;
    selectNode(rowNode: IRowNode, clearSelection: boolean): void;
    selectNodes(rowNodes: IRowNode[], clearSelection: boolean): void;
    deSelectRow(primaryKeyValue: any, clearSelection: boolean): void;
    deSelectRows(primaryKeyValues: any[], clearSelection: boolean): void;
    deSelectNode(rowNode: IRowNode, clearSelection: boolean): void;
    deSelectNodes(rowNodes: IRowNode[], clearSelection: boolean): void;
    private getSelectionStartEndNodes;
    selectCellRange(gridCellRange: GridCellRange, clearSelection?: boolean): void;
    selectCellRangeByQuery(query: string, gridCellRange?: GridCellRange, clearSelection?: boolean): void;
    selectColumn(columnId: string): void;
    selectColumns(columnIds: string[]): void;
    getFirstRowNode(): IRowNode;
    getFirstDisplayedRowNode(): IRowNode;
    getVisibleRowNodes(config?: {
        includeGroupRows?: boolean;
        filterFn?: (rowNode: IRowNode) => boolean;
    }): IRowNode[];
    getAllRowNodes(config?: {
        includeGroupRows?: boolean;
        filterFn?: (rowNode: IRowNode) => boolean;
    }): IRowNode[];
    getGroupRowNodes(config?: {
        filterFn?: (rowNode: IRowNode) => boolean;
    }): IRowNode[];
    getGridCellFromRowNode(rowNode: IRowNode, columnId: string): GridCell | undefined;
    getRawValueFromRowNode(rowNode: IRowNode, columnId: string): any | undefined;
    getDisplayValueFromRowNode(rowNode: IRowNode, columnId: string): any | undefined;
    getDisplayValueFromRawValue(rowNode: IRowNode, columnId: string, rawValue: any): string | undefined;
    getNormalisedValueFromRowNode(rowNode: IRowNode, columnId: string): any | undefined;
    getRowNodesForPrimaryKeys(primaryKeyValues: any[]): IRowNode[];
    getRowNodeForPrimaryKey(primaryKeyValue: any): IRowNode;
    getPrimaryKeyValueForRowNode(rowNode: IRowNode): any;
    getRowNodeForIndex(index: number): IRowNode<any>;
    getPrimaryKeyValuesForRowNodes(rowNodes: IRowNode[]): any[];
    setRowGroupColumns(columnIds: string[]): void;
    clearRowGroupColumns(): void;
    expandAllRowGroups(): void;
    collapseAllRowGroups(): void;
    expandRowGroupsForValues(columnValues: any[]): void;
    isGridPivotable(): boolean;
    isGridGroupable(): boolean;
    isGridRowSelectable(): boolean;
    isGridRowSelected(primaryKeyValue: any): boolean;
    isGridRangeSelectable(): boolean;
    isGridRowGrouped(): boolean;
    isGridInPivotMode(): boolean;
    isMasterDetailGrid(): boolean;
    isTreeDataGrid(): boolean;
    isGroupRowNode(rowNode: IRowNode): boolean;
    isVisibleRowNode(rowNode: IRowNode): boolean;
    isSummaryNode(rowNode: IRowNode): boolean;
    isQuickFilterAvailable(): boolean;
    redrawGrid(): void;
    getGridCellsForRawValue(columnId: string, rawValue: any): GridCell[] | undefined;
    getCellRawValueCount(columnId: string, rawValue: any): number;
    getGridCellsForDisplayValue(columnId: string, displayValue: any): GridCell[] | undefined;
    jumpToRow(primaryKeyValue: any): void;
    jumpToColumn(columnId: string): void;
    jumpToCell(primaryKeyValue: any, columnId: string, rowNode?: IRowNode): void;
    highlightCell(cellHighlightInfo: CellHighlightInfo): void;
    unHighlightCell(primaryKeyValue: CellHighlightInfo['primaryKeyValue'], columnId: CellHighlightInfo['columnId']): void;
    unHighlightAllCells(): void;
    highlightRow(rowHighlightInfo: RowHighlightInfo): void;
    highlightRows(rowHighlightInfos: RowsHighlightInfo): void;
    unHighlightRow(primaryKeyValue: RowHighlightInfo['primaryKeyValue']): void;
    unHighlightRows(primaryKeyValues: RowsHighlightInfo['primaryKeyValues']): void;
    unHighlightAllRows(): void;
    refreshCell(rowNode: IRowNode, columnId: string, suppressFlash?: boolean): void;
    refreshCells(rowNode: IRowNode, columnIds: string[], suppressFlash?: boolean): void;
    refreshAllCells(forceUpdate?: boolean): void;
    refreshGridCell(gridCell: GridCell): void;
    refreshGridCells(gridCells: GridCell[]): void;
    refreshColumn(columnId: string): void;
    refreshColumns(columnIds: string[]): void;
    refreshRowByPrimaryKey(primaryKey: any): void;
    refreshRowNode(rowNode: IRowNode): void;
    refreshRowNodes(rowNodes: IRowNode[]): void;
    refreshGroupRowNodes(): void;
    isCellEditable(gridCell: GridCell): boolean;
    isCellEdited(gridCell: GridCell): boolean;
    isEveryCellEditable(gridCells: GridCell[]): boolean;
    getRowCount(): number;
    getVisibleRowCount(): number;
    getRowsInViewport(): IRowNode[];
    getColumnCount(): number;
    getVisibleColumnCount(): number;
    selectAll(): void;
    deselectAll(): void;
    getGridContainerElement(): HTMLElement | null;
    openGridInfoSettingsPanel(): void;
    getAgGridRowModelType(): RowModelType;
    showTransposedView(transposeConfig?: TransposeConfig): void;
    getAllAgGridColumns(): Column<any>[];
    updateAgGridColumnState(columnState: ColumnState): void;
    updateAgGridColumnStates(columnStates: ColumnState[]): void;
    setAgGridColumnDefinitions(columnDefinitions: (ColDef | ColGroupDef)[]): void;
    updateAgGridColumnDefinition(columnDefinitionToBeUpdated: ColDefWithId): void;
    updateAgGridColumnDefinitions(columnDefinitionsToBeUpdated: ColDefWithId[]): void;
    removeAgGridColumnDefinition(columnId: string): void;
    addAgGridColumnDefinition(newColumnDefinition: ColDefWithId): void;
}
