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 ILinkedListNode from 'typescript-dotnet-commonjs/System/Collections/ILinkedListNode';
import { EventDispatcher } from '../../events/Events.module';
import { DataColumn, DataColumnJSON, DataTable } from '../Data.module';
export declare const SYSMBOLS: string[];
interface DataColumnCollectionJSON {
    colItems: DataColumnJSON[];
}
export declare class DataColumnCollection implements IList<DataColumn> {
    private _list;
    private _table;
    private _onDataColumnAdded;
    isEndless?: boolean | undefined;
    get onDataColumnAdded(): EventDispatcher<DataColumnAddedArg>;
    private _onDdataColumnRemoved;
    get onDataColumnRemoved(): EventDispatcher<DataColumnRemovedArg>;
    private _onCollectionCleared;
    get onCollectionCleared(): EventDispatcher<CollectionClearedArg>;
    constructor(table: DataTable);
    static fromJSON(json: any): DataColumnCollection;
    toJSON(): DataColumnCollectionJSON;
    set(index: number, value: DataColumn): boolean;
    get last(): ILinkedListNode<DataColumn>;
    insert(index: number, value: DataColumn): void;
    removeAt(index: number): boolean;
    add(entry: DataColumn): this;
    remove(entry: DataColumn, max?: number): number;
    clear(): number;
    importEntries(entries: IEnumerable<DataColumn> | ArrayLike<DataColumn> | IEnumerator<DataColumn>): number;
    toArray(): DataColumn[];
    get count(): number;
    get isReadOnly(): boolean;
    contains(entry: DataColumn): boolean;
    copyTo<TTarget extends ArrayLikeWritable<any>>(target: TTarget, index?: number): TTarget;
    getEnumerator(): IEnumerator<DataColumn>;
    get(index: number): DataColumn;
    getNode(index: number): ILinkedListNode<DataColumn>;
    indexOf(item: DataColumn): number;
    /**
     * Возвращает колонку по имени. Если не найдено - возвращает undefined
     * @param name Имя колонки
     */
    getByName(name: string): DataColumn;
    getById(id: string): DataColumn;
    /**
     * Возвращает индекс колонки по имени. Если не найдено - возвращает -1
     * @param name Имя колонки
     */
    getOrdinal(name: string): number;
    private addColumn;
    private removeColumn;
    private checkCountAndThrow;
    /**
     * Обновляет значения индекса DataColumn после вставки/удаления
     * @param start стартовый индекс
     */
    updateIndex(start: number): void;
}
export declare class DataColumnAddedArg {
    newColumn: DataColumn;
    constructor(newColumn: DataColumn);
}
export declare class DataColumnRemovedArg {
    oldColumn: DataColumn;
    constructor(oldColumn: DataColumn);
}
export declare class CollectionClearedArg {
}
export {};
