import type { Conversation, ConversationPreview } from "../../interfaces/models/Conversation"; import type { ChatMessage } from "../../interfaces/models/ChatMessage"; import type { SublayState } from "../sublayReducers"; interface ConversationEntry { data: Conversation | null; loading: boolean; error: string | null; } interface MessagesBucket { items: ChatMessage[]; loading: boolean; hasMore: boolean; oldestMessageId: string | null; newestMessageId: string | null; } interface ThreadBucket { items: ChatMessage[]; loading: boolean; hasMore: boolean; } export interface ChatState { conversations: Record; conversationList: { items: ConversationPreview[]; loading: boolean; hasMore: boolean; cursor: string | null; }; messages: Record; threads: Record; typingUsers: Record; socketConnected: boolean; totalUnreadCount: number | null; unreadConversationCount: number | null; } export declare const setConversation: import("@reduxjs/toolkit").ActionCreatorWithPayload, setConversationLoading: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ conversationId: string; loading: boolean; }, "chat/setConversationLoading">, setConversationList: import("@reduxjs/toolkit").ActionCreatorWithPayload, setConversationListLoading: import("@reduxjs/toolkit").ActionCreatorWithPayload, setConversationListHasMore: import("@reduxjs/toolkit").ActionCreatorWithPayload, setConversationListCursor: import("@reduxjs/toolkit").ActionCreatorWithPayload, upsertConversationPreview: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ conversationId: string; patch: Partial; }, "chat/upsertConversationPreview">, insertConversationPreview: import("@reduxjs/toolkit").ActionCreatorWithPayload, removeConversationPreview: import("@reduxjs/toolkit").ActionCreatorWithPayload, incrementUnread: import("@reduxjs/toolkit").ActionCreatorWithPayload, clearUnread: import("@reduxjs/toolkit").ActionCreatorWithPayload, setUnreadSummary: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ totalUnread: number; unreadConversationCount: number; }, "chat/setUnreadSummary">, setMessagesLoading: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ conversationId: string; loading: boolean; }, "chat/setMessagesLoading">, setMessagesHasMore: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ conversationId: string; hasMore: boolean; }, "chat/setMessagesHasMore">, upsertMessage: import("@reduxjs/toolkit").ActionCreatorWithPayload, addOptimisticMessage: import("@reduxjs/toolkit").ActionCreatorWithPayload, failOptimisticMessage: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ conversationId: string; localId: string; }, "chat/failOptimisticMessage">, removeMessage: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ conversationId: string; messageId: string; }, "chat/removeMessage">, updateReactions: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ conversationId: string; messageId: string; reactionCounts: Record; userId: string; emoji: string; delta: 1 | -1; currentUserId: string; }, "chat/updateReactions">, setThreadReplies: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ parentMessageId: string; messages: ChatMessage[]; hasMore: boolean; }, "chat/setThreadReplies">, setThreadLoading: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ parentMessageId: string; loading: boolean; }, "chat/setThreadLoading">, setTypingUsers: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ conversationId: string; userIds: string[]; }, "chat/setTypingUsers">, setSocketConnected: import("@reduxjs/toolkit").ActionCreatorWithPayload; declare const _default: import("@reduxjs/toolkit").Reducer; export default _default; export declare const selectConversation: (conversationId: string) => (state: { sublay: SublayState; }) => Conversation | null; export declare const selectConversationLoading: (conversationId: string) => (state: { sublay: SublayState; }) => boolean; export declare const selectConversationList: (state: { sublay: SublayState; }) => ConversationPreview[]; export declare const selectConversationListLoading: (state: { sublay: SublayState; }) => boolean; export declare const selectConversationListHasMore: (state: { sublay: SublayState; }) => boolean; export declare const selectConversationListCursor: (state: { sublay: SublayState; }) => string | null; export declare const selectMessages: (conversationId: string) => (state: { sublay: SublayState; }) => ChatMessage[]; export declare const selectMessagesLoading: (conversationId: string) => (state: { sublay: SublayState; }) => boolean; export declare const selectMessagesHasMore: (conversationId: string) => (state: { sublay: SublayState; }) => boolean; export declare const selectOldestMessageId: (conversationId: string) => (state: { sublay: SublayState; }) => string | null; export declare const selectNewestMessageId: (conversationId: string) => (state: { sublay: SublayState; }) => string | null; export declare const selectThreadReplies: (parentMessageId: string) => (state: { sublay: SublayState; }) => ChatMessage[]; export declare const selectThreadLoading: (parentMessageId: string) => (state: { sublay: SublayState; }) => boolean; export declare const selectThreadHasMore: (parentMessageId: string) => (state: { sublay: SublayState; }) => boolean; export declare const selectTypingUsers: (conversationId: string) => (state: { sublay: SublayState; }) => string[]; export declare const selectSocketConnected: (state: { sublay: SublayState; }) => boolean; export declare const selectTotalUnreadCount: (state: { sublay: SublayState; }) => number | null; export declare const selectUnreadConversationCount: (state: { sublay: SublayState; }) => number | null;