import { BaseData } from './base-data.class';
import { JsonBasedObject } from '../core/json-object.class';
type Constructor<T> = {
    new (...args: any[]): T;
    getFileName(): string;
};
export declare class SmartList<T extends BaseData> extends BaseData {
    private _list;
    elementConstructor: Constructor<T>;
    setConstructor(modelClass: Constructor<T>): void;
    toArray(): T[];
    add(): T;
    removeAt(index: number): void;
    private internalCleanUp;
    get count(): number;
    getEnumerator(): IterableIterator<T>;
    findIndex(match: (item: T) => boolean): number;
    findIndexFrom(startIndex: number, match: (item: T) => boolean): number;
    clear(): void;
    initData(): void;
    protected onNewObjectAppeared<T extends JsonBasedObject>(obj: T): void;
    get(index: number): T;
    subscribeForUpdates(paramName: string, parent: BaseData): void;
    private findElement;
    private refreshList;
    cleanUp(parentWasDestroyed: boolean): void;
}
export {};
//# sourceMappingURL=smart-list.class.d.ts.map