stream-chat
Version:
JS SDK for the Stream Chat API
64 lines • 4.01 kB
TypeScript
import { StateStore } from './store';
import type { StreamChat } from './client';
import type { DefaultGenerics, Event, ExtendableGenerics, PartialPollUpdate, PollAnswer, PollData, PollEnrichData, PollOptionData, PollResponse, PollVote, QueryVotesFilters, QueryVotesOptions, VoteSort } from './types';
export declare const isVoteAnswer: <SCG extends ExtendableGenerics = DefaultGenerics>(vote: PollVote<SCG> | PollAnswer<SCG>) => vote is PollAnswer<SCG>;
export declare type PollAnswersQueryParams = {
filter?: QueryVotesFilters;
options?: QueryVotesOptions;
sort?: VoteSort;
};
export declare type PollOptionVotesQueryParams = {
filter: {
option_id: string;
} & QueryVotesFilters;
options?: QueryVotesOptions;
sort?: VoteSort;
};
declare type OptionId = string;
export declare type PollState<SCG extends ExtendableGenerics = DefaultGenerics> = SCG['pollType'] & Omit<PollResponse<SCG>, 'own_votes' | 'id'> & {
lastActivityAt: Date;
maxVotedOptionIds: OptionId[];
ownVotesByOptionId: Record<OptionId, PollVote<SCG>>;
ownAnswer?: PollAnswer;
};
declare type PollInitOptions<SCG extends ExtendableGenerics = DefaultGenerics> = {
client: StreamChat<SCG>;
poll: PollResponse<SCG>;
};
export declare class Poll<SCG extends ExtendableGenerics = DefaultGenerics> {
readonly state: StateStore<PollState<SCG>>;
id: string;
private client;
private unsubscribeFunctions;
constructor({ client, poll }: PollInitOptions<SCG>);
private getInitialStateFromPollResponse;
reinitializeState: (poll: PollInitOptions<SCG>['poll']) => void;
get data(): PollState<SCG>;
handlePollUpdated: (event: Event<SCG>) => void;
handlePollClosed: (event: Event<SCG>) => void;
handleVoteCasted: (event: Event<SCG>) => void;
handleVoteChanged: (event: Event<SCG>) => void;
handleVoteRemoved: (event: Event<SCG>) => void;
query: (id: string) => Promise<PollResponse<SCG>>;
update: (data: Exclude<PollData<SCG>, 'id'>) => Promise<import("./types").APIResponse & import("./types").UpdatePollAPIResponse<SCG>>;
partialUpdate: (partialPollObject: PartialPollUpdate<SCG>) => Promise<import("./types").APIResponse & import("./types").UpdatePollAPIResponse<SCG>>;
close: () => Promise<import("./types").APIResponse & import("./types").UpdatePollAPIResponse<SCG>>;
delete: () => Promise<import("./types").APIResponse>;
createOption: (option: PollOptionData) => Promise<import("./types").APIResponse & import("./types").CreatePollOptionAPIResponse<SCG>>;
updateOption: (option: PollOptionData) => Promise<import("./types").APIResponse & import("./types").UpdatePollOptionAPIResponse<SCG>>;
deleteOption: (optionId: string) => Promise<import("./types").APIResponse>;
castVote: (optionId: string, messageId: string) => Promise<import("./types").APIResponse & import("./types").CastVoteAPIResponse<SCG>>;
removeVote: (voteId: string, messageId: string) => Promise<import("./types").APIResponse & {
vote: PollVote<DefaultGenerics>;
}>;
addAnswer: (answerText: string, messageId: string) => Promise<import("./types").APIResponse & import("./types").CastVoteAPIResponse<SCG>>;
removeAnswer: (answerId: string, messageId: string) => Promise<import("./types").APIResponse & {
vote: PollVote<DefaultGenerics>;
}>;
queryAnswers: (params: PollAnswersQueryParams) => Promise<import("./types").APIResponse & import("./types").PollAnswersAPIResponse<SCG>>;
queryOptionVotes: (params: PollOptionVotesQueryParams) => Promise<import("./types").APIResponse & import("./types").PollVotesAPIResponse<SCG>>;
}
export declare function extractPollData<SCG extends ExtendableGenerics = DefaultGenerics>(pollResponse: PollResponse<SCG>): PollData<SCG>;
export declare function extractPollEnrichedData<SCG extends ExtendableGenerics = DefaultGenerics>(pollResponse: PollResponse<SCG>): Omit<PollEnrichData<SCG>, 'own_votes' | 'latest_answers'>;
export {};
//# sourceMappingURL=poll.d.ts.map