export interface GitHub { query ( query ) : AsyncIterableIterator < GitHubIssue [ ] > ; hasWriteAccess ( user ) : Promise < boolean > ; repoHasLabel ( label ) : Promise < boolean > ; } export interface GitHubIssue extends GitHub { getIssue ( ) : Promise < Issue > ; postComment ( body ) : Promise < void > ; deleteComment ( id ) : Promise < void > ; getComments ( last ? ) : AsyncIterableIterator < Comment [ ] > ; closeIssue ( ) : Promise < void > ; lockIssue ( ) : Promise < void > ; setMilestone ( milestoneId ) : Promise < void > ; addLabel ( label ) : Promise < void > ; removeLabel ( label ) : Promise < void > ; } type SortVar = 'comments' | 'reactions' | 'reactions-+1' | 'reactions--1' | 'reactions-smile' | 'reactions-thinking_face' | 'reactions-heart' | 'reactions-tada' | 'interactions' | 'created' | 'updated' ; type SortOrder = 'asc' | 'desc' ; export type Reactions = { '+1' : number ; '-1' : number ; laugh : number ; hooray : number ; confused : number ; heart : number ; rocket : number ; eyes : number ; } ; export interface User { name : string ; isGitHubApp ? : boolean ; } export interface Comment { author : User ; body : string ; id : number ; timestamp : number ; } export interface Issue { author : User ; body : string ; title : string ; labels : string [ ] ; open : boolean ; locked : boolean ; number : number ; numComments : number ; reactions : Reactions ; milestoneId : number | null ; milestone ? : string ; assignee ? : string ; createdAt : number ; updatedAt : number ; closedAt ? : number ; } export interface Query { q : string ; sort ? : SortVar ; order ? : SortOrder ; }