import { Cell, type CellModel, type CellAddress } from "@excel/cell";
import type { Worksheet } from "@excel/worksheet";
import type { Style, NumFmt, Font, Alignment, Protection, Borders, Fill, CellValue, RowValues } from "@excel/types";
interface RowDimensions {
    min: number;
    max: number;
}
export interface RowModel {
    cells: CellModel[];
    number: number;
    min: number;
    max: number;
    height?: number;
    style: Partial<Style>;
    hidden: boolean;
    outlineLevel: number;
    collapsed: boolean;
    dyDescent?: number;
}
declare class Row {
    private _worksheet;
    private _number;
    private _cells;
    style: Partial<Style>;
    private _hidden?;
    private _outlineLevel?;
    height?: number;
    dyDescent?: number;
    constructor(worksheet: Worksheet, number: number);
    /**
     * The row number
     */
    get number(): number;
    /**
     * The worksheet that contains this row
     */
    get worksheet(): Worksheet;
    /**
     * Commit a completed row to stream.
     * Inform Streaming Writer that this row (and all rows before it) are complete
     * and ready to write. Has no effect on Worksheet document.
     */
    commit(): void;
    /**
     * Helps GC by breaking cyclic references
     */
    destroy(): void;
    findCell(colNumber: number): Cell | undefined;
    getCellEx(address: CellAddress): Cell;
    /**
     * Get cell by number, column letter or column key
     */
    getCell(col: string | number): Cell;
    /**
     * Cut one or more cells (cells to the right are shifted left)
     *
     * Note: this operation will not affect other rows
     */
    splice(start: number, count: number, ...inserts: CellValue[]): void;
    /**
     * Iterate over all non-null cells in a row
     */
    eachCell(callback: (cell: Cell, colNumber: number) => void): void;
    /**
     * Iterate over all cells in a row (including empty cells)
     */
    eachCell(opt: {
        includeEmpty?: boolean;
    }, callback: (cell: Cell, colNumber: number) => void): void;
    addPageBreak(lft?: number, rght?: number): void;
    /**
     * Get a row as a sparse array
     */
    get values(): CellValue[];
    /**
     * Set the values by contiguous or sparse array, or by key'd object literal
     */
    set values(value: RowValues);
    /**
     * Get row values as a 0-based sparse array (column 1 => index 0).
     *
     * This is useful when you want to compare/stringify values without the
     * leading separator produced by the 1-based sparse array returned by `values`.
     */
    getValues(): CellValue[];
    /**
     * Convenience stringification for row values.
     *
     * Equivalent to `row.getValues().join(separator)`.
     */
    valuesToString(separator?: string): string;
    /**
     * Returns true if the row includes at least one cell with a value
     */
    get hasValues(): boolean;
    /**
     * Number of cells including empty ones
     */
    get cellCount(): number;
    /**
     * Number of non-empty cells
     */
    get actualCellCount(): number;
    /**
     * Get the min and max column number for the non-null cells in this row or null
     */
    get dimensions(): RowDimensions | null;
    private _applyStyle;
    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 protection(): Partial<Protection> | undefined;
    set protection(value: Partial<Protection> | undefined);
    get border(): Partial<Borders> | undefined;
    set border(value: Partial<Borders> | undefined);
    get fill(): Fill | undefined;
    set fill(value: Fill | undefined);
    get hidden(): boolean;
    set hidden(value: boolean);
    get outlineLevel(): number;
    set outlineLevel(value: number);
    get collapsed(): boolean;
    get model(): RowModel | null;
    set model(value: RowModel);
}
export { Row };
