blob: 50e1729657e438cc31639f0e52ededadf0554b63 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
import { MatrixClient } from "../client";
import { PollStartEvent } from "../extensible_events_v1/PollStartEvent";
import { MatrixEvent } from "./event";
import { Relations } from "./relations";
import { Room } from "./room";
import { TypedEventEmitter } from "./typed-event-emitter";
export declare enum PollEvent {
New = "Poll.new",
End = "Poll.end",
Update = "Poll.update",
Responses = "Poll.Responses",
Destroy = "Poll.Destroy",
UndecryptableRelations = "Poll.UndecryptableRelations"
}
export type PollEventHandlerMap = {
[PollEvent.Update]: (event: MatrixEvent, poll: Poll) => void;
[PollEvent.Destroy]: (pollIdentifier: string) => void;
[PollEvent.End]: () => void;
[PollEvent.Responses]: (responses: Relations) => void;
[PollEvent.UndecryptableRelations]: (count: number) => void;
};
export declare class Poll extends TypedEventEmitter<Exclude<PollEvent, PollEvent.New>, PollEventHandlerMap> {
readonly rootEvent: MatrixEvent;
private matrixClient;
private room;
readonly roomId: string;
readonly pollEvent: PollStartEvent;
private _isFetchingResponses;
private relationsNextBatch;
private responses;
private endEvent;
/**
* Keep track of undecryptable relations
* As incomplete result sets affect poll results
*/
private undecryptableRelationEventIds;
constructor(rootEvent: MatrixEvent, matrixClient: MatrixClient, room: Room);
get pollId(): string;
get endEventId(): string | undefined;
get isEnded(): boolean;
get isFetchingResponses(): boolean;
get undecryptableRelationsCount(): number;
getResponses(): Promise<Relations>;
/**
*
* @param event - event with a relation to the rootEvent
* @returns void
*/
onNewRelation(event: MatrixEvent): void;
private fetchResponses;
/**
* Only responses made before the poll ended are valid
* Refilter after an end event is recieved
* To ensure responses are valid
*/
private refilterResponsesOnEnd;
private countUndecryptableEvents;
private validateEndEvent;
}
//# sourceMappingURL=poll.d.ts.map
|