diff --git a/types/matrix-appservice-bridge/index.d.ts b/types/matrix-appservice-bridge/index.d.ts
index 8f416f02c6..6c41bd4d7a 100644
--- a/types/matrix-appservice-bridge/index.d.ts
+++ b/types/matrix-appservice-bridge/index.d.ts
@@ -4,10 +4,6 @@
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 3.1
-///
-
-import { EventEmitter } from 'events';
-
import {
EventType,
MsgType,
diff --git a/types/matrix-js-sdk/index.d.ts b/types/matrix-js-sdk/index.d.ts
index 5f7a4315a5..8777f8796b 100644
--- a/types/matrix-js-sdk/index.d.ts
+++ b/types/matrix-js-sdk/index.d.ts
@@ -1,13 +1,16 @@
-// Type definitions for matrix-js-sdk 5.0
+// Type definitions for matrix-js-sdk 5.1
// Project: https://github.com/matrix-org/matrix-js-sdk
// Definitions by: Huan LI (李卓桓)
+// André Vitor L. Matos
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.8
-///
-
import { EventEmitter } from 'events';
+// avoid requiring 'request' type
+export function request(r: any): void;
+export function getRequest(): any;
+
export type MatrixCallback = (err: null | object, data: any) => void;
export class MatrixError {
@@ -64,8 +67,8 @@ export class Room {
getJoinedMembers(): RoomMember[];
getLiveTimeline(): EventTimeline;
getMember(userId: string): RoomMember;
- getMembersWithMembership(membership: string): RoomMember[];
- getMyMembership(myUserId: string): string;
+ getMembersWithMembership(membership: MembershipType): RoomMember[];
+ getMyMembership(): MembershipType | null;
getOrCreateFilteredTimelineSet(filter: Filter): EventTimelineSet;
getPendingEvents(): MatrixEvent[];
getReceiptsForEvent(event: MatrixEvent): object[];
@@ -135,7 +138,8 @@ export type EventType = never
|'m.room.redaction'
|'m.room.tombstone'
|'m.room.topic'
- |'m.sticker';
+ |'m.sticker'
+ |'m.presence';
export type MsgType = never
|'m.audio'
@@ -150,15 +154,112 @@ export type MsgType = never
export type MembershipType = never
|'ban'
|'invite'
- |'joined'
|'join'
|'leave';
+
+export interface MatrixStore {
+ isNewlyCreated(): Promise;
+ getSyncToken(): string | null;
+ setSyncToken(token: string): void;
+ storeGroup(group: Group): void;
+ getGroup(groupId: string): Group | null;
+ getGroups(): Group[];
+ storeRoom(room: Room): void;
+ getRoom(roomId: string): Room | null;
+ getRooms(): Room[];
+ removeRoom(roomId: string): void;
+ getRoomSummaries(): RoomSummary[];
+ storeUser(user: User): void;
+ getUser(userId: string): User | null;
+ getUsers(): User[];
+ scrollback(room: Room, limit: number): any[];
+ storeEvents(room: Room, events: MatrixEvent[], token: string, toStart?: boolean): boolean;
+ storeFilter(filter: Filter): void;
+ getFilter(userId: string, filterId: string): Filter | null;
+ getFilterIdByName(filterName: string): Filter | null;
+ setFilterIdByName(filterName: string, filterId: string): void;
+ storeAccountDataEvents(events: MatrixEvent[]): void;
+ getAccountData(eventType: string): MatrixEvent | undefined;
+ setSyncData(syncData: any): Promise;
+ wantsSave(): boolean;
+ save(force?: boolean): void;
+ startup(): Promise;
+ getSavedSync(): Promise;
+ getSavedSyncToken(): Promise;
+ deleteAllData(): Promise;
+ getOutOfBandMembers(roomId: string): Promise;
+ setOutOfBandMembers(roomId: string, membershipEvents: MatrixEvent[]): Promise;
+ clearOutOfBandMembers(): Promise;
+ getClientOptions(): Promise;
+ storeClientOptions(options: any): Promise;
+}
+
+export class MemoryStore implements MatrixStore {
+ localStorage?: any;
+ constructor(opts?: { localStorage?: any });
+ isNewlyCreated(): Promise;
+ getSyncToken(): string | null;
+ setSyncToken(token: string): void;
+ storeGroup(group: Group): void;
+ getGroup(groupId: string): Group | null;
+ getGroups(): Group[];
+ storeRoom(room: Room): void;
+ getRoom(roomId: string): Room | null;
+ getRooms(): Room[];
+ removeRoom(roomId: string): void;
+ getRoomSummaries(): RoomSummary[];
+ storeUser(user: User): void;
+ getUser(userId: string): User | null;
+ getUsers(): User[];
+ scrollback(room: Room, limit: number): any[];
+ storeEvents(room: Room, events: MatrixEvent[], token: string, toStart?: boolean): boolean;
+ storeFilter(filter: Filter): void;
+ getFilter(userId: string, filterId: string): Filter | null;
+ getFilterIdByName(filterName: string): Filter | null;
+ setFilterIdByName(filterName: string, filterId: string): void;
+ storeAccountDataEvents(events: MatrixEvent[]): void;
+ getAccountData(eventType: string): MatrixEvent | undefined;
+ setSyncData(syncData: any): Promise;
+ wantsSave(): boolean;
+ save(force?: boolean): void;
+ startup(): Promise;
+ getSavedSync(): Promise;
+ getSavedSyncToken(): Promise;
+ deleteAllData(): Promise;
+ getOutOfBandMembers(roomId: string): Promise;
+ setOutOfBandMembers(roomId: string, membershipEvents: MatrixEvent[]): Promise;
+ clearOutOfBandMembers(): Promise;
+ getClientOptions(): Promise;
+ storeClientOptions(options: any): Promise;
+}
+
+export class IndexedDBStore extends MemoryStore {
+ constructor(opts: {
+ indexedDB: any,
+ dbName?: string,
+ workerScript?: string,
+ workerApi?: any,
+ });
+}
+
+export interface LoginPayload {
+ user_id: string;
+ access_token: string;
+ home_server: string;
+ device_id: string;
+}
+
/**
* Only part of the MatrixClient methods was put here
* because they are too many.
* @huan 14 June 2019
*/
export class MatrixClient extends EventEmitter {
+ store: MatrixStore;
+ deviceId: string;
+ _http: any;
+ credentials: any;
+
acceptGroupInvite(groupId: string, opts: object): Promise;
addPushRule(scope: string, kind: string, ruleId: string, body: object, callback?: () => void): Promise;
addRoomToGroup(groupId: string, roomId: string, isPublic: boolean): Promise;
@@ -166,7 +267,7 @@ export class MatrixClient extends EventEmitter {
addThreePid(creds: object, bind: boolean, callback?: (err: null | object, data: any) => void): Promise;
addUserToGroupSummary(groupId: string, userId: string, roleId?: string): Promise;
backPaginateRoomEventsSearch(searchResults: object): Promise