import { CdmCorpusContext, CdmDocumentDefinition, CdmObject, cdmObjectType, VisitCallback } from '../internal';
export declare class CdmCollection<T extends CdmObject> {
    ctx: CdmCorpusContext;
    defaultType: cdmObjectType;
    /**
     * @internal
     */
    allItems: T[];
    private _owner;
    constructor(ctx: CdmCorpusContext, owner: CdmObject, defaultType: cdmObjectType);
    protected get owner(): CdmObject;
    protected set owner(value: CdmObject);
    get length(): number;
    /**
     * Add an element to CdmCollection.
     * @param obj If this parameter is a string, a new object with this name will be created and added to the collection.
     * This parameter can also be an element to be added to the cdmCollection or a list of elements to be added to the collection.
     * @param simpleRef Parameter only used if function creates a new elementn,
     * and is only used for certain types by the constructor of the object to be added.
     * @returns If an item was created, it returns the newly created item. Otherwise doesn't return anything.
     */
    push(obj: string | T, simpleRef?: boolean): T;
    insert(index: number, item: T): void;
    concat(list: T[]): void;
    remove(currObject: T): boolean;
    removeAt(index: number): void;
    item(name: string): T;
    visitArray(path: string, preChildren: VisitCallback, postChildren: VisitCallback): boolean;
    clear(): void;
    [Symbol.iterator](): IterableIterator<T>;
    protected makeDocumentDirty(): void;
    protected propagateInDocument(cdmObject: CdmObject, document: CdmDocumentDefinition): void;
}
