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, 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; /** * * @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