@@ -8,11 +8,13 @@ interface AsyncIterator<T> {
88 next ( ) : Promise < IteratorResult < T > > ;
99}
1010
11- declare class EventEmitter {
12- on ( evt : string , listener : Function ) : EventEmitter ;
13- once ( evt : string , listener : Function ) : EventEmitter ;
14- off ( evt : string , listener : Function ) : EventEmitter ;
15- emit ( evt : string , ...args : any [ ] ) : Boolean ;
11+ declare class EventEmitter < T > {
12+ on < K extends keyof T > ( event : K , listener : T [ K ] ) : this;
13+ on ( evt : string , listener : Function ) : this;
14+ once < K extends keyof T > ( event : K , listener : T [ K ] ) : this;
15+ once ( evt : string , listener : Function ) : this;
16+ off < K extends keyof T > ( event : T | string , listener ?: Function ) : this;
17+ emit < K extends keyof T > ( event : T | string , ...args : any [ ] ) : boolean ;
1618}
1719
1820export var applicationId : string ;
@@ -158,16 +160,16 @@ export class File extends BaseObject {
158160 static createWithoutData ( objectId : string ) : File ;
159161
160162 destroy ( ) : Promise < void > ;
161- fetch ( fetchOptions ?: FetchOptions , options ?: AuthOptions ) : Promise < File > ;
163+ fetch ( fetchOptions ?: FetchOptions , options ?: AuthOptions ) : Promise < this > ;
162164 metaData ( ) : any ;
163165 metaData ( metaKey : string ) : any ;
164166 metaData ( metaKey : string , metaValue : any ) : any ;
165167 name ( ) : string ;
166168 ownerId ( ) : string ;
167169 url ( ) : string ;
168- save ( options ?: FileSaveOptions ) : Promise < File > ;
170+ save ( options ?: FileSaveOptions ) : Promise < this > ;
169171 setACL ( acl ?: ACL ) : any ;
170- setUploadHeader ( key : string , value : string ) : File ;
172+ setUploadHeader ( key : string , value : string ) : this ;
171173 size ( ) : any ;
172174 thumbnailURL ( width : number , height : number ) : string ;
173175 toFullJSON ( ) : any ;
@@ -532,13 +534,21 @@ export class Query<T extends Queriable> extends BaseQuery<T> {
532534 options ?: { orderedBy ?: string ; batchSize ?: number } ,
533535 authOptions ?: AuthOptions
534536 ) : AsyncIterator < T > ;
535- subscribe ( options ?: { subscriptionId ?: string } ) : Promise < LiveQuery > ;
537+ subscribe ( options ?: { subscriptionId ?: string } ) : Promise < LiveQuery < T > > ;
536538}
537539
538- declare class LiveQuery extends EventEmitter {
540+ declare class LiveQuery < T > extends EventEmitter < LiveQueryEvent < T > > {
539541 unsubscribe ( ) : Promise < void > ;
540542}
541543
544+ declare interface LiveQueryEvent < T > {
545+ create : ( target ?: T ) => any ;
546+ update : ( target ?: T , updatedKeys ?: string [ ] ) => any ;
547+ enter : ( target ?: T , updatedKeys ?: string [ ] ) => any ;
548+ leave : ( target ?: T , updatedKeys ?: string [ ] ) => any ;
549+ delete : ( target ?: T ) => any ;
550+ }
551+
542552declare class FriendShipQuery extends Query < User > { }
543553
544554export class SearchQuery < T extends Queriable > extends BaseQuery < T > {
0 commit comments