declare module $data { interface IPromise extends Object { then: { (handler: (args: T) => void ): IPromise; (handler: (args: T) => any): IPromise; }; fail: { (handler: (args: T) => void ): IPromise; (handler: (args: T) => any): IPromise; }; valueOf(): any; } export class Base implements Object { constructor(...params: any[]); getType: () => Base; } interface Event extends Object { attach(eventHandler: (sender: any, event: any) => void ): void; detach(eventHandler: () => void ): void; fire(e: any, sender: any): void; } export class Entity extends Base { constructor(); constructor(initData: {}); entityState: number; changedProperties: any[]; propertyChanging: Event; propertyChanged: Event; propertyValidationError: Event; isValid: boolean; } export class Queryable implements Object { filter(predicate: (it: T) => boolean): Queryable; filter(predicate: (it: T) => boolean, thisArg: any): Queryable; map(projection: (it: T) => any): Queryable; length(): $data.IPromise; length(handler: (result: number) => void ): $data.IPromise; length(handler: { success?: (result: number) => void; error?: (result: any) => void; }): $data.IPromise; forEach(handler: (it: any) => void ): $data.IPromise; toArray(): $data.IPromise; toArray(handler: (result: T[]) => void ): $data.IPromise; toArray(handler: { success?: (result: T[]) => void; error?: (result: any) => void; }): $data.IPromise; single(predicate: (it: T) => boolean, params?: any, handler?: (result: T) => void ): $data.IPromise; single(predicate: (it: T) => boolean, params?: any, handler?: { success?: (result: T) => void; error?: (result: any) => void; }): $data.IPromise; take(amout: number): Queryable; skip(amout: number): Queryable; order(selector: string): Queryable; orderBy(predicate: (it: any) => any): Queryable; orderByDescending(predicate: (it: any) => any): Queryable; first(predicate: (it: T) => boolean, params?: any, handler?: (result: T) => void ): $data.IPromise; first(predicate: (it: T) => boolean, params?: any, handler?: { success?: (result: T) => void; error?: (result: any) => void; }): $data.IPromise; include(selector: string): Queryable; removeAll(): $data.IPromise; removeAll(handler: (count: number) => void ): $data.IPromise; removeAll(handler: { success?: (result: number) => void; error?: (result: any) => void; }): $data.IPromise; } export class EntitySet extends Queryable { tableName: string; collectionName: string; add(item: T): T; add(initData: {}): T; attach(item: T): void; attach(item: {}): void; attachOrGet(item: T): T; attachOrGet(item: {}): T; detach(item: T): void; detach(item: {}): void; remove(item: T): void; remove(item: {}): void; elementType: T; } export class EntityContext implements Object { constructor(config: any); constructor(config: { name: string; oDataServiceHost: string; MaxDataServiceVersion: string; }); constructor(config: { name: string; oDataServiceHost?: string; databaseName?: string; localStoreName?: string; user?: string; password?: string; }); onReady(): $data.IPromise; onReady(handler: (currentContext: EntityContext) => void ): $data.IPromise; saveChanges(): $data.IPromise; saveChanges(handler: (result: number) => void ): $data.IPromise; saveChanges(cb: { success?: (result: number) => void; error?: (result: any) => void; }): $data.IPromise; add(item: Entity): Entity; attach(item: Entity): void; attachOrGet(item: Entity): Entity; detach(item: Entity): void; remove(item: Entity): void; } export class Blob implements Object { } export class Guid implements Object { constructor(value: string); value: string; } export class SimpleBase implements Object { constructor(initData: any); } export class Geospatial extends SimpleBase { constructor(initData: any); type: String; } export class Geography extends Geospatial { constructor(initData: any); } export class GeographyPoint extends Geography { constructor(initData: any); constructor(coordinates: any[]); constructor(longitude: number, latitude: number); longitude: number; latitude: number; coordinates: any[]; } export class GeographyLineString extends Geography { constructor(initData: any); constructor(coordinates: any[]); coordinates: any[]; } export class GeographyPolygon extends Geography { constructor(initData: any); constructor(coordinates: any[]); coordinates: any[]; } export class GeographyMultiPoint extends Geography { constructor(initData: any); constructor(coordinates: any[]); coordinates: any[]; } export class GeographyMultiLineString extends Geography { constructor(initData: any); constructor(coordinates: any[]); coordinates: any[]; } export class GeographyMultiPolygon extends Geography { constructor(initData: any); constructor(coordinates: any[]); coordinates: any[]; } export class GeographyCollection extends Geography { constructor(initData: any); constructor(geometries: any[]); geometries: any[]; } export class Geometry extends Geospatial { constructor(initData: any); } export class GeometryPoint extends Geometry { constructor(initData: any); constructor(coordinates: any[]); constructor(x: number, y: number); x: number; y: number; coordinates: any[]; } export class GeometryLineString extends Geometry { constructor(initData: any); constructor(coordinates: any[]); coordinates: any[]; } export class GeometryPolygon extends Geometry { constructor(initData: any); constructor(coordinates: any[]); coordinates: any[]; } export class GeometryMultiPoint extends Geometry { constructor(initData: any); constructor(coordinates: any[]); coordinates: any[]; } export class GeometryMultiLineString extends Geometry { constructor(initData: any); constructor(coordinates: any[]); coordinates: any[]; } export class GeometryMultiPolygon extends Geometry { constructor(initData: any); constructor(coordinates: any[]); coordinates: any[]; } export class GeometryCollection extends Geography { constructor(initData: any); constructor(geometries: any[]); geometries: any[]; } } declare module Q { export var resolve: (p: any) => $data.IPromise; export var when: (p: $data.IPromise, then?: () => any, fail?: () => any) => $data.IPromise; export var all: (p: $data.IPromise[]) => $data.IPromise; export var allResolved: (p: $data.IPromise[]) => $data.IPromise; export var fcall: (handler: () => any) => $data.IPromise; } interface String { contains(s: string): boolean; startsWith(s: string): boolean; endsWith(s: string): boolean; strLength(): number; indexOf(s: string): number; concat(s: string): string; } interface Date { day(): number; hour(): number; minute(): number; month(): number; second(): number; year(): number; } interface Number { round(): number; floor(): number; ceiling(): number; }