import { AddRoomMessageAction, ApiRoom, EditAction, IMessage, IRoom, ReactionAction, RoomMember } from '../types/types';
import { default as XmppClient } from '../networking/xmppClient';
interface RoomMessagesState {
    rooms: {
        [jid: string]: IRoom;
    };
    activeRoomJID: string;
    isChatUiVisible: boolean;
    editAction?: EditAction;
    isLoading: boolean;
    usersSet: Record<string, RoomMember>;
    reportRoom: {
        isOpen: boolean;
    };
    subscribedRooms: string[];
    pushSubscriptionStatus: Record<string, 'pending' | 'subscribed' | 'error' | 'blocked'>;
    loadingText?: string;
}
interface PreloadRoomUpdate {
    jid: string;
    messages?: IMessage[];
    unreadCapped?: boolean;
    historyPreloadState?: 'idle' | 'loading' | 'done' | 'error';
}
export declare const addRoomViaApi: import('@reduxjs/toolkit').AsyncThunk<void, {
    room: IRoom;
    xmpp: XmppClient;
}, {
    state?: unknown;
    dispatch?: import('redux-thunk').ThunkDispatch<unknown, unknown, import('redux').UnknownAction>;
    extra?: unknown;
    rejectValue?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const getLastMessageTimestamp: (state: RoomMessagesState, jid: string) => string | null;
export declare const addRoom: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    roomData: IRoom;
}, "roomMessages/addRoom">, deleteAllRooms: import('@reduxjs/toolkit').ActionCreatorWithoutPayload<"roomMessages/deleteAllRooms">, setRoomMessages: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    roomJID: string;
    messages: IMessage[];
}, "roomMessages/setRoomMessages">, replaceRoomMessages: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    roomJID: string;
    messages: IMessage[];
}, "roomMessages/replaceRoomMessages">, addRoomMessage: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<AddRoomMessageAction, "roomMessages/addRoomMessage">, deleteRoomMessage: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    roomJID: string;
    messageId: string;
}, "roomMessages/deleteRoomMessage">, setEditAction: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<EditAction, "roomMessages/setEditAction">, editRoomMessage: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    roomJID: string;
    messageId: string;
    text: string;
}, "roomMessages/editRoomMessage">, setComposing: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    chatJID: string;
    composing: boolean;
    composingList?: string[];
}, "roomMessages/setComposing">, setIsLoading: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    chatJID?: string;
    loading: boolean;
    loadingText?: string;
}, "roomMessages/setIsLoading">, setLastViewedTimestamp: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    chatJID: string;
    timestamp: number;
}, "roomMessages/setLastViewedTimestamp">, setRoomNoMessages: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    value: boolean;
    chatJID?: string;
}, "roomMessages/setRoomNoMessages">, setCurrentRoom: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    roomJID: string | null;
}, "roomMessages/setCurrentRoom">, setChatUiVisible: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<boolean, "roomMessages/setChatUiVisible">, setRoomRole: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    chatJID: string;
    role: string;
}, "roomMessages/setRoomRole">, setReactions: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<ReactionAction, "roomMessages/setReactions">, setLogoutState: import('@reduxjs/toolkit').ActionCreatorWithoutPayload<"roomMessages/setLogoutState">, setActiveMessage: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    id: string;
    chatJID: string;
}, "roomMessages/setActiveMessage">, setCloseActiveMessage: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    chatJID: string;
}, "roomMessages/setCloseActiveMessage">, deleteRoom: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    jid: string;
}, "roomMessages/deleteRoom">, updateRoom: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    jid: string;
    updates: Partial<IRoom>;
}, "roomMessages/updateRoom">, updateUsersSet: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    rooms: ApiRoom[];
}, "roomMessages/updateUsersSet">, setOpenReportModal: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    isOpen: boolean;
}, "roomMessages/setOpenReportModal">, insertUsers: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    newUsers: RoomMember[];
}, "roomMessages/insertUsers">, setPushSubscriptionStatus: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    jid: string;
    status: "pending" | "subscribed" | "error" | "blocked";
}, "roomMessages/setPushSubscriptionStatus">, clearPushSubscriptions: import('@reduxjs/toolkit').ActionCreatorWithoutPayload<"roomMessages/clearPushSubscriptions">, applyRoomsPreloadBatch: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
    rooms: PreloadRoomUpdate[];
}, "roomMessages/applyRoomsPreloadBatch">;
declare const _default: import('redux').Reducer<RoomMessagesState>;
export default _default;
