import { VuexModule } from "vuex-module-decorators";
import { MessageThread } from "../types/MessageThread";
import { FoundMessage, Message } from "../types/Message";
import { MessageFilterType } from "../types/CountingMessages";
import { PreviewMessages } from "../types/PreviewMessages";
import { ThreadSubject } from "../types/ThreadSubject";
import { CreateMessageDto, ReplyMessageDto, SearchMessagesDto, UpdateMessageDto } from "../dto/MessageDto";
import { ChangeThreadOrderPayload, ChangeThreadSubjectPayload, GetThreadsPayload, UpdateManagersInThread } from "../services/ThreadService";
export declare const MAX_DEFAULT_MESSAGES_SIZE = 10;
export default class MessageModule extends VuexModule {
    threads: MessageThread[];
    subjects: ThreadSubject[];
    messageFilterType: MessageFilterType | null;
    orderName: string;
    currentThreadId: null | number;
    foundMessages: FoundMessage[];
    isInitialisedWebsocket: boolean;
    get isCoffeeTime(): boolean;
    get getPreviewMessages(): (thread: MessageThread) => PreviewMessages | null;
    setInitializeWebsocket(): void;
    setThreads(threads: MessageThread[]): void;
    setFoundMessages(messages: FoundMessage[]): void;
    addFoundMessages(messages: FoundMessage[]): void;
    setCurrentThreadId(threadId: number): void;
    setOrderName(orderName: string): void;
    removeThread(threadId: number): void;
    removeMessageFromThread(payload: {
        messageId: number;
        threadId: number;
    }): void;
    setSubjects(subjects: ThreadSubject[]): void;
    setFilterType(filterType: MessageFilterType | null): void;
    addMessage(message: Message): void;
    updateMessage(message: Message): void;
    addThread(thread: MessageThread): void;
    updateThread(thread: MessageThread): void;
    loadSubjects(): Promise<void>;
    loadThreads(payload?: GetThreadsPayload): Promise<void>;
    infinityLoadThreads(payload: GetThreadsPayload): Promise<MessageThread[]>;
    closeThread(threadId: number): Promise<void>;
    openThread(threadId: number): Promise<void>;
    addThreadToFavorite(threadId: number): Promise<void>;
    removeThreadFromFavorite(threadId: number): Promise<void>;
    changeThreadSubject(payload: ChangeThreadSubjectPayload): Promise<void>;
    changeThreadOrder(payload: ChangeThreadOrderPayload): Promise<void>;
    updateManagersInThread(payload: UpdateManagersInThread): Promise<void>;
    createThread(dto: CreateMessageDto): Promise<Message>;
    sendReplyMessage(dto: ReplyMessageDto): Promise<void>;
    saveMessage(dto: UpdateMessageDto): Promise<void>;
    removeMessage(payload: {
        messageId: number;
        threadId: number;
    }): Promise<void>;
    loadThreadById(threadId: number): Promise<void>;
    searchMessages(dto: SearchMessagesDto & {
        withPaginate?: boolean;
    }): Promise<FoundMessage[]>;
    initWebsocket(): Promise<void>;
}
