import { ArcTable } from './ArcTable.fs.js';
import { Option } from '@fable-org/fable-library-js/Option.js';
import { int32 } from '@fable-org/fable-library-js/Int32.js';
import { CompositeHeader_$union, IOType_$union } from './CompositeHeader.fs.js';
import { IEnumerator, IMap } from '@fable-org/fable-library-js/Util.js';
import { CompositeColumn } from './CompositeColumn.fs.js';
import { CompositeCell_$union } from './CompositeCell.fs.js';
import { FSharpList } from '@fable-org/fable-library-js/List.js';
import { TypeInfo } from '@fable-org/fable-library-js/Reflection.js';
/**
 * If a table with the given name exists in the TableList, returns it, else returns None.
 */
export declare function ArcTablesAux_tryFindIndexByTableName(name: string, tables: ArcTable[]): Option<int32>;
/**
 * If a table with the given name exists in the TableList, returns it, else fails.
 */
export declare function ArcTablesAux_findIndexByTableName(name: string, tables: ArcTable[]): int32;
/**
 * Collects the IOType of each distinct entity in the tables. Then merges the IOType of each entity according to the IOType.Merge function.
 */
export declare function ArcTablesAux_getIOMap(tables: ArcTable[]): IMap<string, IOType_$union>;
export declare function ArcTablesAux_applyIOMap(map: IMap<string, IOType_$union>, tables: ArcTable[]): void;
/**
 * Fails, if the index is out of range of the Tables collection. When allowAppend is set to true, it may be out of range by at most 1.
 */
export declare function ArcTablesAux_SanityChecks_validateSheetIndex(index: int32, allowAppend: boolean, sheets: ArcTable[]): void;
/**
 * Fails, if two tables have the same name.
 */
export declare function ArcTablesAux_SanityChecks_validateNamesUnique(names: Iterable<string>): void;
/**
 * Fails, if the name is already used by another table.
 */
export declare function ArcTablesAux_SanityChecks_validateNewNameUnique(newName: string, existingNames: Iterable<string>): void;
/**
 * Fails, if the name is already used by another table at a different position.
 *
 * Does not fail, if the newName is the same as the one in the given position.
 */
export declare function ArcTablesAux_SanityChecks_validateNewNameAtUnique(index: int32, newName: string, existingNames: Iterable<string>): void;
export declare function ArcTablesAux_SanityChecks_validateNewNamesUnique(newNames: Iterable<string>, existingNames: Iterable<string>): void;
export declare class ArcTables implements Iterable<ArcTable> {
    tables: ArcTable[];
    constructor(initTables: ArcTable[]);
    get Tables(): ArcTable[];
    set Tables(newTables: ArcTable[]);
    get_Item(index: int32): ArcTable;
    get TableNames(): FSharpList<string>;
    get TableCount(): int32;
    AddTable(table: ArcTable, index?: int32): void;
    AddTables(tables: Iterable<ArcTable>, index?: int32): void;
    InitTable(tableName: string, index?: int32): ArcTable;
    InitTables(tableNames: Iterable<string>, index?: int32): void;
    GetTableAt(index: int32): ArcTable;
    GetTable(name: string): ArcTable;
    UpdateTableAt(index: int32, table: ArcTable): void;
    UpdateTable(name: string, table: ArcTable): void;
    SetTableAt(index: int32, table: ArcTable): void;
    SetTable(name: string, table: ArcTable): void;
    RemoveTableAt(index: int32): void;
    RemoveTable(name: string): void;
    MapTableAt(index: int32, updateFun: ((arg0: ArcTable) => void)): void;
    MapTable(name: string, updateFun: ((arg0: ArcTable) => void)): void;
    RenameTableAt(index: int32, newName: string): void;
    RenameTable(name: string, newName: string): void;
    AddColumnAt(tableIndex: int32, header: CompositeHeader_$union, cells?: CompositeCell_$union[], columnIndex?: int32, forceReplace?: boolean): void;
    AddColumn(tableName: string, header: CompositeHeader_$union, cells?: CompositeCell_$union[], columnIndex?: int32, forceReplace?: boolean): void;
    RemoveColumnAt(tableIndex: int32, columnIndex: int32): void;
    RemoveColumn(tableName: string, columnIndex: int32): void;
    UpdateColumnAt(tableIndex: int32, columnIndex: int32, header: CompositeHeader_$union, cells?: CompositeCell_$union[]): void;
    UpdateColumn(tableName: string, columnIndex: int32, header: CompositeHeader_$union, cells?: CompositeCell_$union[]): void;
    GetColumnAt(tableIndex: int32, columnIndex: int32): CompositeColumn;
    GetColumn(tableName: string, columnIndex: int32): CompositeColumn;
    AddRowAt(tableIndex: int32, cells?: CompositeCell_$union[], rowIndex?: int32): void;
    AddRow(tableName: string, cells?: CompositeCell_$union[], rowIndex?: int32): void;
    RemoveRowAt(tableIndex: int32, rowIndex: int32): void;
    RemoveRow(tableName: string, rowIndex: int32): void;
    UpdateRowAt(tableIndex: int32, rowIndex: int32, cells: CompositeCell_$union[]): void;
    UpdateRow(tableName: string, rowIndex: int32, cells: CompositeCell_$union[]): void;
    GetRowAt(tableIndex: int32, rowIndex: int32): CompositeCell_$union[];
    GetRow(tableName: string, rowIndex: int32): CompositeCell_$union[];
    static ofSeq(tables: Iterable<ArcTable>): ArcTables;
    MoveTable(oldIndex: int32, newIndex: int32): void;
    static updateReferenceTablesBySheets(referenceTables: ArcTables, sheetTables: ArcTables, keepUnusedRefTables?: boolean): ArcTables;
    GetEnumerator(): IEnumerator<ArcTable>;
    [Symbol.iterator](): Iterator<ArcTable>;
    "System.Collections.IEnumerable.GetEnumerator"(): IEnumerator<any>;
}
export declare function ArcTables_$reflection(): TypeInfo;
export declare function ArcTables_$ctor_Z420F2E1A(initTables: ArcTable[]): ArcTables;
//# sourceMappingURL=ArcTables.fs.d.ts.map