UNPKG

stream-chat

Version:

JS SDK for the Stream Chat API

65 lines (64 loc) 3.46 kB
import { StateStore } from './store'; import type { StreamChat } from './client'; import type { Event, PartialPollUpdate, PollAnswer, PollData, PollEnrichData, PollOptionData, PollResponse, PollVote, QueryVotesFilters, QueryVotesOptions, VoteSort } from './types'; export declare const isVoteAnswer: (vote: PollVote | PollAnswer) => vote is PollAnswer; export type PollAnswersQueryParams = { filter?: QueryVotesFilters; options?: QueryVotesOptions; sort?: VoteSort; }; export type PollOptionVotesQueryParams = { filter: { option_id: string; } & QueryVotesFilters; options?: QueryVotesOptions; sort?: VoteSort; }; type OptionId = string; export type PollState = Omit<PollResponse, 'own_votes' | 'id'> & { lastActivityAt: Date; maxVotedOptionIds: OptionId[]; ownVotesByOptionId: Record<OptionId, PollVote>; ownAnswer?: PollAnswer; }; type PollInitOptions = { client: StreamChat; poll: PollResponse; }; export declare class Poll { readonly state: StateStore<PollState>; id: string; private client; constructor({ client, poll }: PollInitOptions); private getInitialStateFromPollResponse; private upsertOfflineDb; reinitializeState: (poll: PollInitOptions["poll"]) => void; get data(): PollState; handlePollUpdated: (event: Event) => void; handlePollClosed: (event: Event) => void; handleVoteCasted: (event: Event) => void; handleVoteChanged: (event: Event) => void; handleVoteRemoved: (event: Event) => void; query: (id: string) => Promise<PollResponse>; update: (data: Exclude<PollData, "id">) => Promise<import("./types").APIResponse & import("./types").UpdatePollAPIResponse>; partialUpdate: (partialPollObject: PartialPollUpdate) => Promise<import("./types").APIResponse & import("./types").UpdatePollAPIResponse>; close: () => Promise<import("./types").APIResponse & import("./types").UpdatePollAPIResponse>; delete: () => Promise<import("./types").APIResponse>; createOption: (option: PollOptionData) => Promise<import("./types").APIResponse & import("./types").CreatePollOptionAPIResponse>; updateOption: (option: PollOptionData) => Promise<import("./types").APIResponse & import("./types").CreatePollOptionAPIResponse>; deleteOption: (optionId: string) => Promise<import("./types").APIResponse>; castVote: (optionId: string, messageId: string) => Promise<import("./types").APIResponse & import("./types").CastVoteAPIResponse>; removeVote: (voteId: string, messageId: string) => Promise<import("./types").APIResponse & { vote: PollVote; }>; addAnswer: (answerText: string, messageId: string) => Promise<import("./types").APIResponse & import("./types").CastVoteAPIResponse>; removeAnswer: (answerId: string, messageId: string) => Promise<import("./types").APIResponse & { vote: PollVote; }>; queryAnswers: (params: PollAnswersQueryParams) => Promise<import("./types").APIResponse & import("./types").PollAnswersAPIResponse>; queryOptionVotes: (params: PollOptionVotesQueryParams) => Promise<import("./types").APIResponse & import("./types").PollVotesAPIResponse>; } export declare function extractPollData(pollResponse: PollResponse): PollData; export declare function mapPollStateToResponse(poll: Poll): PollResponse; export declare function extractPollEnrichedData(pollResponse: PollResponse): Omit<PollEnrichData, 'own_votes' | 'latest_answers'>; export {};