import { ICell, ICellComponent, IColumn, IRow } from '../../../../../../types/src/table';
import { default as CoreFeature } from '../CoreFeature';

export default class Cell extends CoreFeature implements ICell {
    table: IColumn['table'];
    column: IColumn;
    row: IRow;
    element: HTMLElement | null;
    contentElement: HTMLElement | null;
    value: any;
    initialValue: any;
    oldValue: any;
    modules: Record<string, any>;
    height: number | null;
    width: number | string | null;
    minWidth: number | null;
    maxWidth: number | null;
    component: ICellComponent | null;
    loaded: boolean;
    calcs?: Record<string, any>;
    hoverMenuElement: HTMLElement | null;
    constructor(column: IColumn, row: IRow);
    /**
     * Setup Functions
     */
    build(): void;
    generateElement(): void;
    _configureCell(): void;
    updateCellClass(): void;
    getTextFormat(): Record<string, string>;
    _generateContents(): void;
    cellRendered(): void;
    /**
     * Getters
     */
    getElement(containerOnly?: boolean): HTMLElement | null;
    getValue(): any;
    getOldValue(): any;
    /**
     * Actions
     */
    setValue(value: any, mutate?: boolean, force?: boolean): void;
    setValueProcessData(value: any, mutate?: boolean, force?: boolean): boolean;
    setValueActual(value: any): void;
    layoutElement(): void;
    setWidth(): void;
    clearWidth(): void;
    getWidth(): number;
    setMinWidth(): void;
    setMaxWidth(): void;
    checkHeight(): void;
    clearHeight(): void;
    setHeight(): void;
    getHeight(): number;
    show(): void;
    hide(): void;
    delete(): void;
    getIndex(): number;
    /**
     * Object Generation
     */
    getComponent(): ICellComponent;
}
