import { IPageContent, IPageContentCell, IPageCellStyle } from './Content';
import { IUtils } from '../Utils';
import { IHelpers } from '../Helpers';
import { IActionsButton } from '../Actions/Buttons';
export interface IParserSorting {
    field: string;
    direction: string;
    enabled: boolean;
    type: string;
    [key: string]: any;
}
export interface IParserFilter {
    field: string;
    enabled: boolean;
    exp: string;
    type: string;
    value: string;
}
export interface IParser {
    grouped: boolean;
    filters: IParserFilter[];
    sorting: IParserSorting | null;
    content: IPageContent;
    visibleGroups: IParserVisibleGroups;
    utils: IUtils;
    groupedContent: IParserGroupedContent;
    defaultCellStyle: IPageCellStyle;
    columnDefinitions: IParserColumnDefinitions;
    groupTagged: boolean;
    parse(): IParserContent;
    toggleGroup(index: number): void;
    setColumnDefinitions(definitions: any[]): void;
    setDefaultCellStyleProperties(style: IPageCellStyle): void;
    headerRenderer(params: IParserParams): IParserCellRenderer | null;
    cellRenderer(params: IParserParams): IParserCellRenderer | null;
}
interface IParserVisibleGroups extends Array<any> {
    [index: number]: any;
}
export interface IParserGroupedContent extends Array<any> {
    [index: number]: IParserData[];
}
interface IParserData {
    [key: string]: any;
}
interface IParserColumnDefinitions extends Array<any> {
    [index: number]: IParserColumnDefinition;
}
export interface IParserCellRenderer {
    value?: number | string;
    button?: IActionsButton;
    style?: IPageCellStyle;
}
export interface IParserEnumValues {
    [key: number]: string;
}
export interface IParserColumnDefinition {
    disabled: boolean;
    id: boolean;
    name: string;
    field: string;
    type: string;
    width: number;
    columnStyle: IPageCellStyle;
    cellStyle: IPageCellStyle;
    defaultValue: string | number | null;
    enumValues: IParserEnumValues;
    ignoreCellRenderer: boolean;
    render(params: IParserParams): IParserCellRenderer | null;
    getDefaultValue(): string | number;
    [key: string]: any;
}
export interface IPageCellStyle extends IPageCellStyle {
    width: string;
}
export interface IParserContent extends Array<any> {
    [index: number]: IParserCell[];
}
export interface IParserCell extends IPageContentCell {
    data: IParserData;
    definition: IParserColumnDefinition;
    id: boolean;
    group: number;
    groupIndex: number;
    header?: boolean;
}
export interface IParserParams {
    data: IParserData;
    definition: IParserColumnDefinition;
    row: number;
    col: number;
    group: number;
    groupIndex: number;
    expanded: boolean;
    header: boolean;
    value: any;
}
export declare class Parser implements IParser {
    grouped: boolean;
    filters: IParserFilter[];
    sorting: IParserSorting | null;
    content: IPageContent;
    groupedContent: IParserGroupedContent;
    columnDefinitions: IParserColumnDefinitions;
    visibleGroups: IParserVisibleGroups;
    utils: IUtils;
    defaultCellStyle: IPageCellStyle;
    helpers: IHelpers;
    groupTagged: boolean;
    constructor();
    toggleGroup(index: number): void;
    parse(): IParserContent;
    setDefaultCellStyleProperties(style: IPageCellStyle): void;
    setColumnDefinitions(definitions?: any[]): void;
    headerRenderer(params: IParserParams): IParserCellRenderer | null;
    cellRenderer(params: IParserParams): IParserCellRenderer | null;
    private createCell;
    private applySorting;
    private applyFilters;
    private mergeCells;
}
export declare class ParserColumnDefinition implements IParserColumnDefinition {
    id: boolean;
    disabled: boolean;
    name: string;
    field: string;
    type: string;
    width: number;
    columnStyle: IPageCellStyle;
    cellStyle: IPageCellStyle;
    defaultValue: string | number | null;
    enumValues: IParserEnumValues;
    ignoreCellRenderer: boolean;
    constructor(data: any, styleDefaults?: IPageCellStyle);
    render(params?: IParserParams): IParserCellRenderer | null;
    getDefaultValue(): string | number;
}
export declare class ParserWrapper {
    constructor();
}
export {};
