import { ISet, IMap } from '@fable-org/fable-library-js/Util.js';
import { FsCellsCollection } from '../Cells/FsCellsCollection.fs.js';
import { FsTableField } from './FsTableField.fs.js';
import { int32 } from '@fable-org/fable-library-js/Int32.js';
import { FsRangeRow } from '../Ranges/FsRangeRow.fs.js';
import { FsRow } from '../FsRow.fs.js';
import { FsRangeAddress } from '../Ranges/FsRangeAddress.fs.js';
import { Option } from '@fable-org/fable-library-js/Option.js';
import { FsColumn } from '../FsColumn.fs.js';
import { FsRangeColumn } from '../Ranges/FsRangeColumn.fs.js';
import { FsCell } from '../Cells/FsCell.fs.js';
import { FsRangeBase } from '../Ranges/FsRangeBase.fs.js';
import { TypeInfo } from '@fable-org/fable-library-js/Reflection.js';
export declare class FsTable extends FsRangeBase {
    _name: string;
    _lastRangeAddress: FsRangeAddress;
    _showTotalsRow: boolean;
    _showHeaderRow: boolean;
    _fieldNames: IMap<string, FsTableField>;
    readonly _uniqueNames: ISet<string>;
    constructor(name: string, rangeAddress: FsRangeAddress, showTotalsRow?: boolean, showHeaderRow?: boolean, fieldNames?: Iterable<string>);
    get Name(): string;
    GetFieldNames(cellsCollection: FsCellsCollection): IMap<string, FsTableField>;
    GetFields(cellsCollection: FsCellsCollection): Iterable<FsTableField>;
    get ShowHeaderRow(): boolean;
    set ShowHeaderRow(showHeaderRow: boolean);
    HeadersRow(): FsRangeRow;
    TryGetHeaderRow(cellsCollection: FsCellsCollection): Option<FsRow>;
    GetHeaderRow(cellsCollection: FsCellsCollection): FsRow;
    GetColumns(cellsCollection: FsCellsCollection): Iterable<FsColumn>;
    GetRows(cellsCollection: FsCellsCollection): Iterable<FsRow>;
    GetBodyRows(cellsCollection: FsCellsCollection): Iterable<FsRow>;
    GetRowAt(index: int32, cellsCollection: FsCellsCollection): FsRow;
    GetBodyRowAt(index: int32, cellsCollection: FsCellsCollection): FsRow;
    RescanRange(): void;
    static rescanRange(table: FsTable): FsTable;
    GetUniqueName(originalName: string, initialOffset: int32, enforceOffset: boolean): string;
    static getUniqueNames(originalName: string, initialOffset: int32, enforceOffset: boolean, table: FsTable): string;
    InitFields(fieldNames: Iterable<string>): void;
    static initFields(fieldNames: Iterable<string>, table: FsTable): FsTable;
    AddFields(tableFields: Iterable<FsTableField>): void;
    static addFields(tableFields: Iterable<FsTableField>, table: FsTable): FsTable;
    Field(name: string, cellsCollection: FsCellsCollection): FsTableField;
    GetField(name: string, cellsCollection: FsCellsCollection): FsTableField;
    static getField(name: string, cellsCollection: FsCellsCollection, table: FsTable): FsTableField;
    GetFieldAt(index: int32, cellsCollection: FsCellsCollection): FsTableField;
    GetFieldIndex(name: string, cellsCollection: FsCellsCollection): int32;
    RenameField(oldName: string, newName: string): void;
    static renameField(oldName: string, newName: string, table: FsTable): FsTable;
    TryGetHeaderCellOfColumnAt(cellsCollection: FsCellsCollection, colIndex: int32): Option<FsCell>;
    static tryGetHeaderCellOfColumnIndexAt(cellsCollection: FsCellsCollection, colIndex: int32, table: FsTable): Option<FsCell>;
    TryGetHeaderCellOfColumn(cellsCollection: FsCellsCollection, column: FsRangeColumn): Option<FsCell>;
    static tryGetHeaderCellOfColumn(cellsCollection: FsCellsCollection, column: FsRangeColumn, table: FsTable): Option<FsCell>;
    GetHeaderCellOfColumnAt(cellsCollection: FsCellsCollection, colIndex: int32): FsCell;
    static getHeaderCellOfColumnIndexAt(cellsCollection: FsCellsCollection, colIndex: int32, table: FsTable): FsCell;
    GetHeaderCellOfColumn(cellsCollection: FsCellsCollection, column: FsRangeColumn): FsCell;
    static getHeaderCellOfColumn(cellsCollection: FsCellsCollection, column: FsRangeColumn, table: FsTable): FsCell;
    GetHeaderCellOfTableField(cellsCollection: FsCellsCollection, tableField: FsTableField): FsCell;
    static getHeaderCellOfTableField(cellsCollection: FsCellsCollection, tableField: FsTableField, table: FsTable): FsCell;
    TryGetHeaderCellOfTableFieldAt(cellsCollection: FsCellsCollection, tableFieldIndex: int32): Option<FsCell>;
    static tryGetHeaderCellOfTableFieldIndexAt(cellsCollection: FsCellsCollection, tableFieldIndex: int32, table: FsTable): Option<FsCell>;
    GetHeaderCellOfTableFieldAt(cellsCollection: FsCellsCollection, tableFieldIndex: int32): FsCell;
    static getHeaderCellOfTableFieldIndexAt(cellsCollection: FsCellsCollection, tableFieldIndex: int32, table: FsTable): FsCell;
    TryGetHeaderCellByFieldName(cellsCollection: FsCellsCollection, fieldName: string): Option<FsCell>;
    static tryGetHeaderCellByFieldName(cellsCollection: FsCellsCollection, fieldName: string, table: FsTable): Option<FsCell>;
    GetDataCellsOfColumnAt(cellsCollection: FsCellsCollection, colIndex: int32): Iterable<FsCell>;
    static getDataCellsOfColumnIndexAt(cellsCollection: FsCellsCollection, colIndex: int32, table: FsTable): Iterable<FsCell>;
    Copy(): FsTable;
    static copy(table: FsTable): FsTable;
    static validateForWrite(table: FsTable, cellsCollection: FsCellsCollection): void;
    RescanFieldNames(cellsCollection: FsCellsCollection): void;
}
export declare function FsTable_$reflection(): TypeInfo;
export declare function FsTable_$ctor_3B894C50(name: string, rangeAddress: FsRangeAddress, showTotalsRow?: boolean, showHeaderRow?: boolean, fieldNames?: Iterable<string>): FsTable;
//# sourceMappingURL=FsTable.fs.d.ts.map