declare namespace Ext { export namespace util { export interface CollectionConfig { decoder?: CallableFunction; defaultSortDirection?: string; extraKeys?: object; filters?: Ext.util.FilterCollection | []; grouper?: object; groups?: Ext.util.GroupCollection; keyFn?: CallableFunction; listeners?: object; multiSortLimit?: number; rootProperty?: string; sorters?: Ext.util.SorterCollection | []; source?: Ext.util.Collection; } export class Collection extends Ext.Base { public filtered?: boolean; public generation?: number; public grouped?: boolean; public isCollection?: boolean; public length?: number; public sorted?: boolean; public updating?: number; public add(item?: object | object[]): object | object[]; public aggregate(property?: string, operation?: string | CallableFunction, begin?: number, end?: number, scope?: object): object; public aggregateByGroup(property?: string, operation?: string | CallableFunction, scope?: object): object; public average(property?: string, begin?: number, end?: number): object; public averageByGroup(property?: string): object; public beginUpdate(): void; public bounds(property?: string, begin?: number, end?: number): []; public boundsByGroup(property?: string): object; public clear(): void; public clone(): Ext.util.Collection; public collect(property?: string, root?: string, allowNull?: boolean): []; public contains(item?: object): boolean; public containsKey(key?: string): boolean; public count(): number; public countByGroup(): object; public createFiltered(property?: Ext.util.Filter[] | string | CallableFunction, value?: object, anyMatch?: boolean, caseSensitive?: boolean, exactMatch?: boolean): Ext.util.Collection; public decodeRemoveItems(): void; public each(fn?: CallableFunction, scope?: object): void; public eachKey(fn?: CallableFunction, scope?: object): void; public endUpdate(): void; public extremes(property?: string, begin?: number, end?: number): []; public extremesByGroup(property?: string): object; public filterBy(fn?: CallableFunction, scope?: object): Ext.util.Collection; public find(property?: string, value?: string | RegExp, start?: number, startsWith?: boolean, endsWith?: boolean, ignoreCase?: boolean): object; public findBy(fn?: CallableFunction, scope?: object, start?: number): object; public findIndex(property?: string, value?: string | RegExp, start?: number, startsWith?: boolean, endsWith?: boolean, ignoreCase?: boolean): number; public findIndexBy(fn?: CallableFunction, scope?: object, start?: number): number; public first(grouped?: boolean): object; public get(key?: string | number): object; public getAt(index?: number): object; public getByKey(key?: string | number): object; public getCount(): number; public getDecoder(): void; public getDefaultSortDirection(): void; public getExtraKeys(): void; public getFilterFn(): CallableFunction; public getFilters(autoCreate?: object): void; public getGrouper(): void; public getGroups(): void; public getKey(item?: object): object; public getMultiSortLimit(): void; public getRange(begin?: number, end?: number): []; public getRootProperty(): void; public getSortFn(): CallableFunction; public getSorters(autoCreate?: object): void; public getSource(): void; public getValues(property?: string, root?: string, start?: number, end?: number): []; public indexOf(item?: object): number; public indexOfKey(key?: object): number; public insert(index?: number, item?: object | object[]): object | object[]; public isItemFiltered(item?: object): boolean; public itemChanged(item?: object, modified?: string[], oldKey?: string | number): void; public last(grouped?: boolean): object; public max(property?: string, begin?: number, end?: number): object; public maxByGroup(property?: string): object; public maxItem(property?: string, begin?: number, end?: number): object; public maxItemByGroup(property?: string): object; public min(property?: string, begin?: number, end?: number): object; public minByGroup(property?: string): object; public minItem(property?: string, begin?: number, end?: number): object; public minItemByGroup(property?: string): object; public onFilterChange(filters?: Ext.util.FilterCollection): void; public onSortChange(sorters?: Ext.util.SorterCollection): void; public remove(item?: object | object[]): number; public removeAll(): Ext.util.Collection; public removeAt(index?: number, count?: number): object | number; public removeByKey(key?: string): object; public replaceAll(item?: object | object[]): object | object[]; public setDecoder(): void; public setDefaultSortDirection(): void; public setExtraKeys(): void; public setFilters(): void; public setGrouper(): void; public setGroups(): void; public setMultiSortLimit(): void; public setRootProperty(): void; public setSorters(): void; public setSource(): void; public sort(property?: string | Ext.util.Sorter[] | CallableFunction, direction?: string, mode?: string): Ext.util.Collection; public sortBy(sorterFn?: CallableFunction): void; public sortData(data?: []): []; public sortItems(sortFn?: CallableFunction): void; public splice(index?: number, toRemove?: number | object[], toAdd?: object[]): void; public sum(property?: string, begin?: number, end?: number): object; public sumByGroup(property?: string): object; public update(fn?: CallableFunction, scope?: object): object; public updateKey(item?: object, oldKey?: string): void; } } }