import { Subject } from 'rxjs';
import { ISortingExpression } from '../data-operations/sorting-expression.interface';
import { IgxGridCellComponent } from './cell.component';
import { IgxColumnComponent } from './column.component';
import { IGridEditEventArgs, IgxGridBaseComponent, IGridDataBindable } from './grid-base.component';
import { IgxRowComponent } from './row.component';
import { IFilteringOperation } from '../data-operations/filtering-condition';
import { IFilteringExpressionsTree } from '../data-operations/filtering-expressions-tree';
import { ISortingStrategy } from '../data-operations/sorting-strategy';
/**
 *@hidden
 */
export declare class GridBaseAPIService<T extends IgxGridBaseComponent & IGridDataBindable> {
    change: Subject<any>;
    protected state: Map<string, T>;
    protected editCellState: Map<string, any>;
    protected editRowState: Map<string, {
        rowID: any;
        rowIndex: number;
    }>;
    protected destroyMap: Map<string, Subject<boolean>>;
    register(grid: T): void;
    unsubscribe(grid: T): void;
    get(id: string): T;
    unset(id: string): void;
    reset(oldId: string, newId: string): void;
    get_column_by_name(id: string, name: string): IgxColumnComponent;
    get_summary_data(id: any): any[];
    set_cell_inEditMode(gridId: string, cell: IgxGridCellComponent): void;
    escape_editMode(gridId: any, cellId?: any): void;
    get_cell_inEditMode(gridId: any): {
        cellID: {
            rowID: any;
            columnID: number;
            rowIndex: number;
        };
        cell: any;
    };
    get_row_index_in_data(id: string, rowID: any): number;
    get_row_by_key(id: string, rowSelector: any): IgxRowComponent<IgxGridBaseComponent & IGridDataBindable>;
    get_row_by_index(id: string, rowIndex: number): IgxRowComponent<IgxGridBaseComponent & IGridDataBindable>;
    get_edit_row_state(gridId: any): {
        rowID: any;
        rowIndex: number;
    };
    set_edit_row_state(gridId: any, row: {
        rowID: any;
        rowIndex: number;
    }): void;
    get_cell_by_key(id: string, rowSelector: any, field: string): IgxGridCellComponent;
    get_cell_by_index(id: string, rowIndex: number, columnIndex: number): IgxGridCellComponent;
    get_cell_by_visible_index(id: string, rowIndex: number, columnIndex: number): IgxGridCellComponent;
    submit_value(gridId: any): void;
    create_grid_edit_args(id: string, rowID: any, columnID: any, editValue: any): {
        args: IGridEditEventArgs;
        isRowSelected: boolean;
        rowData: any;
    };
    update_cell(id: string, rowID: any, columnID: any, editValue: any, gridEditState?: {
        args: IGridEditEventArgs;
        isRowSelected: boolean;
        rowData: any;
    }): void;
    /**
     * Updates related row of provided grid's data source with provided new row value
     * @param grid Grid to update data for
     * @param rowID ID of the row to update
     * @param rowValueInDataSource Initial value of the row as it is in data source
     * @param rowCurrentValue Current value of the row as it is with applied previous transactions
     * @param rowNewValue New value of the row
     */
    protected updateData(grid: any, rowID: any, rowValueInDataSource: any, rowCurrentValue: any, rowNewValue: {
        [x: string]: any;
    }): void;
    update_row(value: any, id: string, rowID: any, gridState?: {
        args: IGridEditEventArgs;
        isRowSelected: boolean;
        rowData: any;
    }): void;
    protected update_row_in_array(id: string, value: any, rowID: any, index: number): void;
    sort(id: string, expression: ISortingExpression): void;
    sort_multiple(id: string, expressions: ISortingExpression[]): void;
    filter(id: string, fieldName: string, term: any, conditionOrExpressionsTree: IFilteringOperation | IFilteringExpressionsTree, ignoreCase: boolean): void;
    filter_global(id: any, term: any, condition: any, ignoreCase: any): void;
    clear_filter(id: any, fieldName: any): void;
    clear_sort(id: any, fieldName: any): void;
    protected prepare_filtering_expression(filteringState: IFilteringExpressionsTree, fieldName: string, searchVal: any, conditionOrExpressionsTree: IFilteringOperation | IFilteringExpressionsTree, ignoreCase: boolean): void;
    protected prepare_sorting_expression(stateCollections: Array<Array<any>>, expression: ISortingExpression): void;
    protected remove_grouping_expression(id: any, fieldName: any): void;
    should_apply_number_style(column: IgxColumnComponent): boolean;
    get_all_data(id: string, includeTransactions?: boolean): any[];
    get_filtered_data(id: string): any[];
    protected getSortStrategyPerColumn(id: string, fieldName: string): ISortingStrategy;
    addRowToData(gridID: string, rowData: any): void;
    deleteRowFromData(gridID: string, rowID: any, index: number): void;
    deleteRowById(gridID: string, rowId: any): void;
    get_row_id(id: string, rowData: any): any;
    row_deleted_transaction(id: string, rowID: any): boolean;
    atInexistingPage(id: string): Boolean;
}
