import { PayloadAction } from '@reduxjs/toolkit';
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;
    editAction?: EditAction;
    isLoading: boolean;
    usersSet: Record<string, RoomMember>;
    reportRoom: {
        isOpen: boolean;
    };
    loadingText?: string;
}
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 roomsStore: import('@reduxjs/toolkit').Slice<RoomMessagesState, {
    addRoom(state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
        roomData: IRoom;
    }>): void;
    deleteRoom(state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
        jid: string;
    }>): void;
    updateRoom(state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
        jid: string;
        updates: Partial<IRoom>;
    }>): void;
    setRoomMessages(state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
        roomJID: string;
        messages: IMessage[];
    }>): void;
    deleteRoomMessage(state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
        roomJID: string;
        messageId: string;
    }>): void;
    setReactions: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<ReactionAction | undefined>) => void;
    setEditAction: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<EditAction | undefined>) => void;
    editRoomMessage(state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
        roomJID: string;
        messageId: string;
        text: string;
    }>): void;
    addRoomMessage(state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<AddRoomMessageAction>): void;
    deleteAllRooms(state: import('immer').WritableDraft<RoomMessagesState>): void;
    insertUsers(state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
        newUsers: RoomMember[];
    }>): void;
    setComposing(state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
        chatJID: string;
        composing: boolean;
        composingList?: string[];
    }>): void;
    setIsLoading: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
        chatJID?: string;
        loading: boolean;
        loadingText?: string;
    }>) => void;
    setLastViewedTimestamp: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
        chatJID: string;
        timestamp: number;
    }>) => void;
    setRoomRole: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
        chatJID: string;
        role: string;
    }>) => void;
    setRoomNoMessages: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
        value: boolean;
        chatJID?: string;
    }>) => void;
    setCurrentRoom: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
        roomJID: string | null;
    }>) => void;
    setLogoutState: (state: import('immer').WritableDraft<RoomMessagesState>) => void;
    setActiveMessage: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
        id: string;
        chatJID: string;
    }>) => void;
    setCloseActiveMessage: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
        chatJID: string;
    }>) => void;
    addRoomFromApi: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
        room: IRoom;
    }>) => void;
    updateUsersSet: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
        rooms: ApiRoom[];
    }>) => void;
    setOpenReportModal: (state: import('immer').WritableDraft<RoomMessagesState>, action: PayloadAction<{
        isOpen: boolean;
    }>) => void;
}, "roomMessages", "roomMessages", import('@reduxjs/toolkit').SliceSelectors<RoomMessagesState>>;
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">, 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">, 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">;
declare const _default: import('redux').Reducer<RoomMessagesState>;
export default _default;
