import { ColDef, ColGroupDef, Column, GridApi, GridOptions, IRowNode, ManagedGridOptionKey, ManagedGridOptions, Module, ModuleName } from 'ag-grid-enterprise';
import { AdaptableAgGrid } from './AdaptableAgGrid';
import { AdaptableColumn, AdaptableColumnGroup } from '../AdaptableState/Common/AdaptableColumn';
import { SelectedCellInfo } from '../AdaptableState/Selection/SelectedCellInfo';
import { SelectedRowInfo } from '../AdaptableState/Selection/SelectedRowInfo';
export type AgGridThemeMode = 'legacy' | 'themingApi';
export declare class AgGridAdapter {
    private _adaptableInstance;
    private DANGER_USE_GETTER_gridApi;
    private DANGER_gridApi_from_args;
    private DANGER_updateGridOptionsMonkeyPatcher;
    initialGridOptions: GridOptions;
    private _agGridId;
    constructor(_adaptableInstance: AdaptableAgGrid, config?: {
        getAgGridColumnApiModuleReference?: () => Module;
    });
    destroy(): void;
    private get adaptableOptions();
    private get adaptableApi();
    private get logger();
    private get agGridOptionsService();
    setAgGridId(agGridId: string): void;
    setAgGridApi(gridApi: GridApi): void;
    getAgGridApi(skipLogging?: boolean): GridApi | undefined;
    monkeyPatchingGridOptionsUpdates(agGridApi: GridApi<any>): void;
    private DANGER_getPrivateAgGridBeans;
    DANGER_getLiveGridOptions(): GridOptions<any>;
    isAgGridModuleRegistered(moduleName: ModuleName): boolean;
    getAgGridRegisteredModules(): Module[];
    getAgGridRegisteredModuleNames(): ModuleName[];
    getAgGridRootElement(): HTMLElement;
    /**
     * When AG Grid is rendered the first time, the AG GridApi is not yet set in the Adaptable context (as it's set only AFTER the grid is fully initialised)
     * yet we need it when evaluating custom GridOptions properties on the first render.
     * to handle this edge case, we try to extract the AG GridApi from the invocation arguments
     */
    grabAgGridApiOnTheFly(args: unknown): void;
    updateGridOptions(options: ManagedGridOptions): void;
    getGridOption<Key extends keyof GridOptions>(key: Key): GridOptions[Key];
    setGridOption<Key extends ManagedGridOptionKey>(key: Key, value: GridOptions[Key]): void;
    getUserGridOptionsProperty<T extends keyof GridOptions>(propertyName: T): GridOptions[T];
    updateColumnFilterActiveState(): void;
    getColumnDefinitionsInclSpecialColumns(agGridColDefs?: GridOptions['columnDefs']): GridOptions['columnDefs'];
    private enhanceColDefsWithSpecialColumns;
    private getSpecialColDefs;
    deriveSelectedCellInfoFromAgGrid(): SelectedCellInfo;
    deriveSelectedRowInfoFromAgGrid(): SelectedRowInfo;
    isPinnedRowNode(rowNode: IRowNode): boolean;
    createAdaptableColumnFromAgGridColumn(agGridColumn: Column, colsToGroups: Record<string, AdaptableColumnGroup>): AdaptableColumn;
    private deriveAdaptableColumnDataType;
    private isColumnReadonly;
    private isColumnFieldonly;
    private isColumnSortable;
    private isColumnRowGroupable;
    private isColumnPivotable;
    private isColumnAggregetable;
    private getColumnAggregationFunctions;
    private isTreeColumn;
    private isColumnMoveable;
    private isColumnQueryable;
    private isColumnExportable;
    private isColumnHideable;
    private isCalculatedColumn;
    private isFreeTextColumn;
    private isActionColumn;
    private isColumnFilterable;
    private getColumnTypes;
    private getColumnPinnedPosition;
    private isColumnFixed;
    private isColumnRowGrouped;
    private isColumnSparkline;
    isVisibleNode(rowNode: IRowNode): boolean;
    getFlattenedColDefs(colDefs?: (ColDef | ColGroupDef)[]): ColDef[];
    /**
     * Mutates the colDefs to ensure that each column has a colId
     */
    assignColumnIdsToColDefs(colDefs?: (ColDef | ColGroupDef)[]): void;
    patchColDefs(colDefs: (ColDef | ColGroupDef)[], patchFn: (colDef: ColDef) => void): void;
    traverseColDefs(colDefs: (ColDef | ColGroupDef)[], modifyFn: (colDef: ColDef) => ColDef | null): (ColDef | ColGroupDef)[];
    getDefaultColumnDefinition(): GridOptions['defaultColDef'];
    _agGridApi_getValue(colKey: string | Column, rowNode: IRowNode, gridApi?: GridApi): any;
}
