import type { BaseTableAPI } from '../ts-types/base-table';
import { type CellRange, type ColumnStyleOption, type CustomCellStyle, type CustomCellStyleArrangement } from '../ts-types';
import type { Style } from '../body-helper/style';
import type { StylePropertyFunctionArg } from '../ts-types/style-define';
export interface ICustomCellStylePlugin {
    new (table: BaseTableAPI, customCellStyle: CustomCellStyle[], customCellStyleArrangement: CustomCellStyleArrangement[]): CustomCellStylePlugin;
}
export declare class CustomCellStylePlugin {
    table: BaseTableAPI;
    customCellStyle: CustomCellStyle[];
    customCellStyleArrangement: CustomCellStyleArrangement[];
    private _customCellStyleArrangementIndex;
    private _customCellStyleArrangementTombstoneCount;
    constructor(table: BaseTableAPI, customCellStyle: CustomCellStyle[], customCellStyleArrangement: CustomCellStyleArrangement[]);
    private _getCustomCellStyleArrangementKey;
    private _rebuildCustomCellStyleArrangementIndex;
    private _compactCustomCellStyleArrangementIfNeeded;
    getCustomCellStyle(col: number, row: number): any;
    getCustomCellStyleIds(col: number, row: number): string[];
    getCustomCellStyleOption(customStyleId: string): CustomCellStyle;
    registerCustomCellStyle(customStyleId: string, customStyle: ColumnStyleOption | ((styleArg: StylePropertyFunctionArg) => ColumnStyleOption) | undefined | null): void;
    arrangeCustomCellStyle(cellPos: {
        col?: number;
        row?: number;
        range?: CellRange;
    }, customStyleId: string | undefined | null, forceFastUpdate?: boolean): void;
    updateCustomCell(customCellStyle: CustomCellStyle[], customCellStyleArrangement: CustomCellStyleArrangement[]): void;
    hasCustomCellStyle(customStyleId: string): boolean;
}
export declare function mergeStyle(cacheStyle: Style, customCellStyle: ColumnStyleOption): Style;
export declare const registerCustomCellStylePlugin: () => void;
