import { IActionsButton } from '../Actions/Buttons';
export interface IPageContentLink {
    external: boolean;
    address: string;
}
export interface IPageCellStyle {
    'background-color'?: string;
    color?: string;
    'font-family'?: string;
    'font-size'?: string;
    'font-style'?: string;
    'font-weight'?: string;
    height?: string;
    'number-format'?: string;
    'text-align'?: string;
    'text-wrap'?: string;
    width?: string;
    tbs?: string;
    rbs?: string;
    bbs?: string;
    lbs?: string;
    tbc?: string;
    rbc?: string;
    bbc?: string;
    lbc?: string;
    tbw?: string;
    rbw?: string;
    bbw?: string;
    lbw?: string;
    [key: string]: any;
}
export interface IPageCellFormatting {
    background?: string;
    color?: string;
}
export interface IPageContentCellIndex {
    row: number;
    col: number;
}
export interface IPageContentCell {
    value: string | number;
    formatted_value?: string | number;
    column_name?: string;
    default_value?: string;
    pk?: boolean;
    index?: IPageContentCellIndex;
    link?: IPageContentLink;
    style: IPageCellStyle;
    originalStyle?: IPageCellStyle;
    dirty?: boolean;
    access?: string;
    button?: IActionsButton;
    checked?: boolean;
}
export interface IPageContent extends Array<any> {
    [index: number]: IPageContentCell[];
}
export interface IPageDeltaContentCol {
    col_index: number;
    cell_content: IPageContentCell;
}
export interface IPageDeltaContentRow {
    row_index: number;
    cols: IPageDeltaContentCol[];
}
export interface IPageDelta {
    new_rows: number[];
    new_cols: number[];
    content_delta: IPageDeltaContentRow[];
}
export interface IPageCellUpdate {
    row: number;
    col: number;
    cell: IPageContentCell;
}
export interface IPageContentProvider {
    deltas: IPageContent;
    current: IPageContent;
    original: IPageContent;
    canDoDelta: boolean;
    dirty: boolean;
    rowLen: number;
    colLen: number;
    update: (rawContent: IPageContent, clean?: boolean, replace?: boolean) => void;
    updateDelta(content: IPageContent): void;
    reset: (content?: IPageContent) => void;
    getCellByRef: (ref: string) => IPageContentCell;
    getCell: (rowIndex: number, columnIndex: number) => IPageContentCell;
    getCells: (fromCell: IPageContentCellIndex, toCell: IPageContentCellIndex, valueOnly?: boolean) => any;
    getCellsByRange: (str: string, valueOnly?: boolean) => any;
    getRowCells: (rowIndex: number) => any;
    getColCells: (colIndex: number) => any;
    updateCell: (rowIndex: number, columnIndex: number, data: IPageContentCell, delta?: boolean) => void;
    updateCells(from: IPageContentCellIndex, to: IPageContentCellIndex, data: IPageContentCell): void;
    addRow: (index: number, direction?: string) => void;
    addColumn: (index: number, direction?: string) => void;
    removeRow: (index: number, direction?: string) => void;
    removeColumn: (index: number) => void;
    setColSize(col: number, value: number): void;
    setRowSize(row: number, value: number): void;
    getCellDeltas: (hasSchema?: boolean) => IPageDelta;
    getDelta: (clean?: boolean) => IPageDelta;
    getFull: (hasSchema?: boolean) => IPageContent;
    getHtml(from?: IPageContentCellIndex, to?: IPageContentCellIndex): any;
    flattenStyles(styles: IPageCellStyle, only?: string[]): string;
}
export declare class PageContent implements IPageContentProvider {
    canDoDelta: boolean;
    dirty: boolean;
    private _original;
    private _current;
    private _deltas;
    private _newRows;
    private _newCols;
    private _utils;
    private _helpers;
    private borders;
    private cellStyles;
    readonly deltas: IPageContent;
    readonly current: IPageContent;
    readonly original: IPageContent;
    constructor(rawContent: IPageContent);
    update(rawContent: IPageContent, clean?: boolean, replace?: boolean): void;
    updateDelta(content: IPageContent): void;
    reset(content?: IPageContent): void;
    readonly rowLen: number;
    readonly colLen: number;
    getCellByRef(ref: string): IPageContentCell;
    getCell(rowIndex: number, columnIndex: number): IPageContentCell;
    getCells(fromCell: any, toCell: any, valueOnly?: boolean, noIndex?: boolean): IPageContent;
    getCellsByRange(str: string, valueOnly?: boolean, noIndex?: boolean): any;
    getRowCells(rowIndex: number): IPageContentCell[];
    getColCells(columnIndex: number): IPageContentCell[];
    updateCellByRef(ref: string, data: IPageContentCell): void;
    updateCell(rowIndex: number, columnIndex: number, data: IPageContentCell, delta?: Boolean): void;
    updateCells(from: IPageContentCellIndex, to: IPageContentCellIndex, data: IPageContentCell): void;
    addRow(index: number, direction?: string): void;
    moveColumns(fromIndex: number, toIndex: number, newIndex: number): void;
    addColumn(index: number, direction?: string): void;
    removeRow(index: number): void;
    removeColumn(index: number): void;
    setRowSize(row: number, value: number): void;
    setColSize(col: number, value: number): void;
    getDelta(): IPageDelta;
    getCellDeltas(hasSchema?: boolean): IPageDelta;
    getFull(hasSchema?: boolean): IPageContent;
    getHtml(from?: IPageContentCellIndex, to?: IPageContentCellIndex): any;
    flattenStyles(styles: IPageCellStyle, only?: string[]): string;
    private addDelta;
    private defaultContent;
}
