///
declare module dstore {
export interface FetchArray extends Array {
totalLength: number;
}
export interface FetchPromise extends IPromise {
forEach(callback: (value: T, index?: number, array?: T[]) => void, thisObject?: any): FetchPromise;
response?: FetchResponse;
totalLength: IPromise;
}
export interface FetchResponse {
data: T;
options: { [key: string]: any; };
status?: number;
text: string;
url: string;
getHeader(name: string): string;
}
export interface ChangeEvent {
id: any;
index?: number;
previousIndex?: number;
target: T;
totalLength: number;
type: string;
}
export interface ICollection {
idProperty: string;
Model: { new (...args: any[]): T; };
tracking?: { remove(): void; };
add(object: T, options?: {}): IPromise;
emit(eventName: string, event: ChangeEvent): boolean;
fetch(): dstore.FetchPromise;
fetchRange(kwArgs: { start?: number; end?: number; }): dstore.FetchPromise;
filter(query: string | {} | { (item: T, index: number): boolean; }): ICollection;
forEach(callback: (item: T, index: number) => void, thisObject?: any): IPromise;
get(id: any): IPromise;
getIdentity(object: T): any;
on(eventName: string, listener: (event: ChangeEvent) => void): IHandle;
put(object: T, options?: {}): IPromise;
remove(id: any): IPromise