import { StitchStorage } from '../StitchStorage.js';
export declare abstract class Gms2ComponentArrayBase<YypData, ComponentClass extends (new (object: YypData) => InstanceType<ComponentClass> & {
    toJSON: () => YypData;
}) | (new (object: YypData, storage: StitchStorage) => InstanceType<ComponentClass> & {
    toJSON: () => YypData;
})> {
    protected items: InstanceType<ComponentClass>[];
    /** Get shallow-copy array of all item instances */
    list(): InstanceType<ComponentClass>[];
    filter(matchFunction: (item: InstanceType<ComponentClass>) => any): InstanceType<ComponentClass>[];
    filterByField(field: keyof InstanceType<ComponentClass>, value: any): InstanceType<ComponentClass>[];
    find(matchFunction: (item: InstanceType<ComponentClass>) => any): InstanceType<ComponentClass> | undefined;
    findByField(field: keyof InstanceType<ComponentClass>, value: any): InstanceType<ComponentClass> | undefined;
    removeByField(field: keyof InstanceType<ComponentClass>, value: any): this;
    push(...items: InstanceType<ComponentClass>[]): this;
    prepend(...items: InstanceType<ComponentClass>[]): this;
    abstract addNew(data: YypData): ComponentClass;
    /**
     * Create a new component instance if one doesn't already exist
     * matching the given uniqueField:uniqueValue pair.
     */
    addIfNew(data: YypData, uniqueField: keyof InstanceType<ComponentClass>, uniqueFieldValue: any): false | ComponentClass;
    toJSON(): YypData[];
    uniqueYypDataEntries(data: YypData[]): YypData[];
}
//# sourceMappingURL=Gms2ComponentArrayBase.d.ts.map