import { GroupItem, GroupMemberItem, ConversationItem, PublicUserItem, MessageItem } from "@droppii-org/wasm-client-sdk"; import { DChatApplicationType, DChatPlatform, SessionStatus, SessionTag } from "../types/chat"; import { ChatCategory } from "../types/conversation"; export interface ConversationListAppParams { applicationType: DChatApplicationType; chatCategory?: ChatCategory; } export type ConversationListUpdateType = "push" | "filter"; export interface SessionStatusItem { type: SessionStatus; count: number; } export interface TagItem { type: SessionTag; count: number; } export interface ISessionSummary { activeSessionCount: number; completedSessionCount: number; sessionStatuses: SessionStatusItem[]; tagCounts: TagItem[]; } export interface ISessionByStatus { id: string; botId: string; ownerId: string; conversationId: string; status: SessionStatus; tag: SessionTag; applicationType: DChatApplicationType; owner?: { id: string; avatar: string | null; fullName: string; username: string; }; conversation: ConversationItem; } export interface IFilterSummary { status?: SessionStatus; tag?: SessionTag; searchTerm?: string; conversationIds?: string[]; teamId?: string; } export interface ConsultantReturnTarget { consultantId: string; botConversationId: string; /** The consultant 1:1 has been shown at least once since the button tap. */ hasArrived: boolean; } export interface ConversationStore { conversationData: ConversationItem | null; setConversationData: (data: ConversationItem, searchClientMsgID?: string, options?: { forceRevalidate?: boolean; }) => void; selectedConversationId: string; selectedSourceId: string; setSelectedConversationId: (threadId: string) => void; pendingResolveTarget: { userId?: string; groupId?: string; botId?: string; } | null; setPendingResolveTarget: (target: { userId?: string; groupId?: string; botId?: string; } | null) => void; consultantReturnTarget: ConsultantReturnTarget | null; setConsultantReturnTarget: (target: ConsultantReturnTarget | null) => void; conversationList: ConversationItem[]; currentConversation?: ConversationItem; currentGroupInfo: Map; currentMemberInGroup: Map; getConversationListByReq: (isOffset?: boolean, appParams?: ConversationListAppParams) => Promise; updateConversationList: (list: ConversationItem[], type: ConversationListUpdateType) => void; updateCurrentConversation: (conversation?: ConversationItem, options?: { forceRevalidate?: boolean; }) => Promise; getCurrentGroupInfoByReq: (groupID: string) => Promise; getCurrentMemberInGroupByReq: (groupID: string) => Promise; getSelfGroupPermissionByReq: (groupID: string) => Promise; resetConversationStore: () => void; /** `skipUrl` resets the selection only; the caller owns the URL. */ clearSelectedConversation: (options?: { skipUrl?: boolean; }) => void; searchClientMsgID: string; setSearchClientMsgID: (clientMsgID: string) => void; /** Jump target that keeps its highlight 5 s (in-thread search) instead of the short pulse. */ heldHighlightClientMsgID: string; setHeldHighlightClientMsgID: (clientMsgID: string) => void; quotedMessage: MessageItem | null; setQuotedMessage: (message: MessageItem | null) => void; pinnedMessageList: MessageItem[]; pinnedTotalCount: number; pinnedRemainingCount: number; pinnedListIsEnd: boolean; setPinnedMessageData: (messageList: MessageItem[], totalCount: number, remainingCount: number, isEnd: boolean) => void; updatePinnedMessage: (message: Partial & { clientMsgID: string; }) => void; removedFromGroupModalOpen: boolean; showRemovedFromGroupModal: () => void; hideRemovedFromGroupModal: () => void; selfDisbandedGroupID: string | null; setSelfDisbandedGroupID: (groupID: string | null) => void; selfLeftGroupID: string | null; setSelfLeftGroupID: (groupID: string | null) => void; isViewOnlyMember: boolean; setIsViewOnlyMember: (value: boolean) => void; refreshViewOnlyGroup: (groupID: string) => Promise; nonMemberGroupID: string | null; setNonMemberGroupID: (groupID: string | null) => void; disbandedGroupID: string | null; } export interface IPersonalInfo { fullName: string; dateOfBirth: string; sex: number; } export interface IUserInfo { id: string; personalInfo: IPersonalInfo; username: string; phone: string; email: string; avatarFullUrl: string; } export interface UserStore { selfInfo: IUserInfo; getSelfInfo: (data: IUserInfo) => void; } export interface UsersInfoStore { usersInfo: Record; upsertUsers: (data: PublicUserItem[]) => void; } export interface AuthStore { accessToken: string; chatToken: string; apiAddress: string; wsAddress: string; platformID: DChatPlatform; userID: string; isCx: boolean; isCrm: boolean; applicationType: DChatApplicationType; onTokenRefresh?: () => Promise; onAuthError?: (error: Error) => void; setAccessToken: (token: string) => void; setChatToken: (token: string) => void; initAuthStore: (config: { accessToken?: string; chatToken?: string; apiAddress?: string; wsAddress?: string; platformID?: DChatPlatform; userID?: string; applicationType: DChatApplicationType; isCrm?: boolean; onTokenRefresh?: () => Promise; onAuthError?: (error: Error) => void; }) => void; } //# sourceMappingURL=type.d.ts.map