import { CellUpdate } from "./CellTypes";
import { ICellModel } from "./ICellModel";
import { CellModel } from "./CellModel";
import { ICellStyle } from "./ICellStyle";
import { ISheetStyle } from "./ISheetStyle";
import { ISheetModel } from "../sheet";
import { ICellHeader, CellHeaderCreator, CellHeaderJSON, CellHeaderUpdate, IColumnHeader, ColumnHeaderUpdate, ColumnHeaderJSON, IRowHeader, RowHeaderUpdate, RowHeaderJSON } from "./ICellHeader";
declare abstract class AbstractCellHeaderModel<T extends ICellHeader, P extends CellHeaderJSON, U extends CellHeaderUpdate> implements ICellHeader {
    private _headerCreator;
    private _scaleFactor;
    private _defaultSize;
    private _minSize;
    private _maxSize;
    private _cellTemplate;
    protected _sheetModel: ISheetModel;
    protected _sheetStyle: ISheetStyle;
    private _size;
    private _hidden;
    private _isCustomSize;
    protected _isCustomFormat: boolean;
    private _style;
    constructor(sheetModel: ISheetModel, headerCreator: CellHeaderCreator<T>, scaleFactor: () => number, defaultSize: () => number, minSize: () => number, maxSize: () => number, update?: CellHeaderUpdate, prevModel?: AbstractCellHeaderModel<T, P, U>);
    protected _copyState(other: AbstractCellHeaderModel<T, P, U>): void;
    protected _initialize(): void;
    isCellHeaderModel(): boolean;
    cloneWithUpdate(update: CellHeaderUpdate): ICellHeader;
    get size(): number | null;
    get hidden(): boolean;
    get isCustomSize(): boolean;
    get isCustomFormat(): boolean;
    get style(): ICellStyle;
    cellTemplate(): ICellModel | null;
    isEqual(other: ICellHeader): boolean;
    isEmpty(): boolean;
    toJSON(): CellHeaderJSON;
}
export declare class RowCellHeaderModel extends AbstractCellHeaderModel<IRowHeader, RowHeaderJSON, RowHeaderUpdate> {
    constructor(sheetModel: ISheetModel, headerCreator: CellHeaderCreator<IRowHeader>, scaleFactor: () => number, defaultSize: () => number, minSize: () => number, maxSize: () => number, update: RowHeaderUpdate, prevModel: ICellHeader);
}
export declare class ColumnCellHeaderModel extends AbstractCellHeaderModel<IColumnHeader, ColumnHeaderJSON, ColumnHeaderUpdate> {
    constructor(sheetModel: ISheetModel, headerCreator: CellHeaderCreator<IColumnHeader>, scaleFactor: () => number, defaultSize: () => number, minSize: () => number, maxSize: () => number, update: ColumnHeaderUpdate, prevModel: ICellHeader);
}
export declare class HeaderTemplateCellModel extends CellModel {
    constructor(sheetModel: ISheetModel, update: CellUpdate);
    isEmpty(): boolean;
    isContentful(): boolean;
}
export {};
//# sourceMappingURL=CellHeaderModel.d.ts.map