import { Note } from "./note.js";
import type { Row } from "./row.js";
import type { Column } from "./column.js";
import type { Worksheet } from "./worksheet.js";
import type { Workbook } from "./workbook.js";
import type { Style, NumFmt, Font, Alignment, Protection, Borders, Fill, CellRichTextValue, CellErrorValue, DataValidation, CellValue, CellHyperlinkValue } from "./types.js";
export type FormulaResult = string | number | boolean | Date | CellErrorValue;
export interface FormulaValueData {
    shareType?: string;
    ref?: string;
    formula?: string;
    sharedFormula?: string;
    result?: FormulaResult;
    date1904?: boolean;
}
interface FullAddress {
    sheetName: string;
    address: string;
    row: number;
    col: number;
}
export interface CellAddress {
    address: string;
    row: number;
    col: number;
    $col$row?: string;
}
export interface NoteText {
    text: string;
    font?: Record<string, unknown>;
}
export interface NoteConfig {
    texts?: NoteText[];
    margins?: {
        insetmode?: string;
        inset?: number[];
    };
    protection?: {
        locked?: string;
        lockText?: string;
    };
    editAs?: string;
}
export interface NoteModel {
    type: string;
    note: NoteConfig;
}
export interface CellModel {
    address: string;
    type: number;
    value?: number | string | boolean | Date | CellRichTextValue | CellErrorValue | CellHyperlinkValue;
    style?: Partial<Style>;
    comment?: NoteModel;
    text?: string;
    hyperlink?: string;
    tooltip?: string;
    master?: string;
    shareType?: string;
    ref?: string;
    formula?: string;
    sharedFormula?: string;
    result?: FormulaResult;
    richText?: CellRichTextValue;
    sharedString?: number;
    error?: CellErrorValue;
    rawValue?: unknown;
}
export type CellValueType = CellValue;
declare class Cell {
    static Types: typeof import("./enums.js").ValueType;
    private _row;
    private _column;
    private _address;
    private _value;
    style: Partial<Style>;
    private _mergeCount;
    private _comment?;
    constructor(row: Row, column: Column, address: string);
    get worksheet(): Worksheet;
    get workbook(): Workbook;
    destroy(): void;
    get numFmt(): string | NumFmt | undefined;
    set numFmt(value: string | undefined);
    get font(): Partial<Font> | undefined;
    set font(value: Partial<Font> | undefined);
    get alignment(): Partial<Alignment> | undefined;
    set alignment(value: Partial<Alignment> | undefined);
    get border(): Partial<Borders> | undefined;
    set border(value: Partial<Borders> | undefined);
    get fill(): Fill | undefined;
    set fill(value: Fill | undefined);
    get protection(): Partial<Protection> | undefined;
    set protection(value: Partial<Protection> | undefined);
    private _mergeStyle;
    get address(): string;
    get row(): number;
    get col(): number;
    get $col$row(): string;
    get type(): number;
    get effectiveType(): number;
    toCsvString(): string;
    addMergeRef(): void;
    releaseMergeRef(): void;
    get isMerged(): boolean;
    merge(master: Cell, ignoreStyle?: boolean): void;
    unmerge(): void;
    isMergedTo(master: Cell): boolean;
    get master(): Cell;
    get isHyperlink(): boolean;
    get hyperlink(): string | undefined;
    get value(): CellValueType;
    set value(v: CellValueType);
    get note(): string | NoteConfig | undefined;
    set note(note: string | NoteConfig);
    get comment(): Note | undefined;
    set comment(comment: Note | NoteConfig | undefined);
    get text(): string;
    get html(): string;
    toString(): string;
    _upgradeToHyperlink(hyperlink: string): void;
    get formula(): string | undefined;
    get result(): FormulaResult | undefined;
    get formulaType(): number;
    get fullAddress(): FullAddress;
    get name(): string;
    set name(value: string);
    get names(): string[];
    set names(value: string[]);
    addName(name: string): void;
    removeName(name: string): void;
    removeAllNames(): void;
    private get _dataValidations();
    get dataValidation(): DataValidation | undefined;
    set dataValidation(value: DataValidation);
    get model(): CellModel;
    set model(value: CellModel);
}
export { Cell };
