import { EventDispatcher } from '../../events/Events.module';
import ArrayLikeWritable from 'typescript-dotnet-commonjs/System/Collections/Array/ArrayLikeWritable';
import IEnumerable from 'typescript-dotnet-commonjs/System/Collections/Enumeration/IEnumerable';
import IEnumerator from 'typescript-dotnet-commonjs/System/Collections/Enumeration/IEnumerator';
import { IList } from 'typescript-dotnet-commonjs/System/Collections/IList';
import { DataTable, DataTableJSON } from '../Data.module';
export interface DataTableCollectionJSON {
    tabItems: DataTableJSON[];
}
export declare class DataTableCollection implements IList<DataTable> {
    private _list;
    isEndless?: boolean;
    constructor();
    private _onDataTableAdded;
    get onDataTableAdded(): EventDispatcher<DataTableAddedArg>;
    private _onDataTableRemoved;
    get onDataTableRemoved(): EventDispatcher<DataTableRemovedArg>;
    static fromJSON(json: any): DataTableCollection;
    toJSON(): DataTableCollectionJSON;
    set(index: number, value: DataTable): boolean;
    insert(index: number, value: DataTable): void;
    removeAt(index: number): boolean;
    add(entry: DataTable): this;
    remove(entry: DataTable, max?: number): number;
    clear(): number;
    importEntries(entries: IEnumerable<DataTable> | ArrayLike<DataTable> | IEnumerator<DataTable>): number;
    toArray(): DataTable[];
    get count(): number;
    get isReadOnly(): boolean;
    contains(entry: DataTable): boolean;
    copyTo<TTarget extends ArrayLikeWritable<any>>(target: TTarget, index?: number): TTarget;
    getEnumerator(): IEnumerator<DataTable>;
    get(index: number): DataTable;
    indexOf(item: DataTable): number;
    /**
     * Возвращает таблицу из коллекции по имению Если не найдено - возвращается undefined
     */
    findByName(name: string): DataTable;
    private raiseOnDataTableAdded;
    private raiseOnDataTableRemoved;
    private checkTableNameAndThrow;
}
export declare class DataTableAddedArg {
    newTable: DataTable;
    constructor(newTable: DataTable);
}
export declare class DataTableRemovedArg {
    oldTable: DataTable;
    constructor(oldTable: DataTable);
}
