import { CellValue, RawCellContent } from 'hyperformula';
import { EventDispatcher } from '../../events/Events.module';
import * as DM from '../Data.module';
export interface DataViewJSON {
    sort: DM.SortInfoJSON[];
    page: DM.PageInfoJSON;
    filter: DM.FilterExprestionJSON;
    uniqueName: string;
    idTable?: string;
}
export declare class DataView {
    uniqueName: string;
    private static _counter;
    private _hashCode;
    private _sort;
    private _page;
    private _filter;
    private _table;
    private _rows;
    /**
     * Событие, происходящее при изменении информации о страницах
     */
    private readonly _onPageInfoChanged;
    get onPageInfoChanged(): EventDispatcher<PageInfoChangedArg>;
    /**
     * Событие, происходящее при изменении информации о фильтрации
     */
    private readonly _onFilterChanged;
    get onFilterChanged(): EventDispatcher<FilterChangedArg>;
    /**
     * Событие, происходящее при изменении информации о сортировке
     */
    private readonly _onSortInfoChanged;
    get onSortInfoChanged(): EventDispatcher<SortInfoChangedArg>;
    get hashCode(): number;
    constructor(uniqueName: string, table: DM.DataTable);
    static fromJSON(json: DataViewJSON | string): DataView;
    toJSON(): DataViewJSON;
    /**
     * Объект таблицы
     */
    get table(): DM.DataTable;
    set table(value: DM.DataTable);
    private onTableDataRowAdded;
    private onTableDataRowRemoved;
    private onTableValuesUpdated;
    /**
     * Объект разбиения на страницы
     */
    get page(): DM.PageInfo | null;
    set page(value: DM.PageInfo | null);
    /**
     * Массив описателей сортировки
     */
    get sort(): DM.SortInfo[] | null;
    set sort(value: DM.SortInfo[] | null);
    /**
     * Выражение фильтрации
     */
    get filter(): DM.FilterExprestion | null;
    set filter(value: DM.FilterExprestion | null);
    /**
     * По индексу записи в представлении возвращает индекс записи в таблице
     * @param viewRow Индекс записи в представлении
     */
    getOriginalIndex(viewRow: number): number;
    /**
     * Возвращает количество записей в представлении
     */
    get rowCount(): number;
    /**
     * Возвращает значение формулы в ячейке
     * @param row индекс строки
     * @param col индекс колонки
     */
    getCellFormula(row: number, col: number): string;
    /**
     * Возвращает расчитанное значение ячейки
     * @param row индекс строки
     * @param col индекс колонки
     */
    getCellValue(row: number, col: number): CellValue;
    setCellValue(row: number, col: number, value: RawCellContent): void;
    getPage(): DM.DataRow[];
    private resetRows;
    private createRows;
    private onPageInfoPropertyChanged;
    private processFilter;
    private processSort;
    private processPage;
    private predicate;
    private blank;
    private notBlank;
    private equal;
    private notEqual;
    private between;
    private notBetween;
    private contains;
    private notContains;
    private greate;
    private less;
    private startWith;
}
export declare class PageInfoChangedArg {
    newPageInfo: DM.PageInfo | null;
    constructor(newPageInfo: DM.PageInfo | null);
}
export declare class FilterChangedArg {
    newFilter: DM.FilterExprestion | null;
    constructor(newFilter: DM.FilterExprestion | null);
}
export declare class SortInfoChangedArg {
    newSort: DM.SortInfo[] | null;
    constructor(newSort: DM.SortInfo[] | null);
}
