import Echo from "laravel-echo";
import { MessageThread } from "../types/MessageThread";
import { Message } from "../types/Message";
import { UpdateCountingDto } from "../dto/UpdateCountingDto";
export declare type onWhisper = (payload: {
    threadId: number;
    userId: string;
}) => void;
export declare type onThread = (payload: {
    thread: MessageThread;
}) => void;
export declare type onMessage = (message: {
    message: Message;
}) => void;
export declare type onUpdateCounting = (payload: UpdateCountingDto) => void;
export declare enum Events {
    newMessage = "MessageCreated",
    deleteMessage = "MessageDeleted",
    updateMessage = "MessageUpdated",
    newThread = "ThreadCreated",
    updateThread = "ThreadUpdated",
    deleteThread = "ThreadDeleted",
    updateCounting = "CountingUpdated",
    whisper = "typing"
}
declare class MessageWebsocketService {
    client: Echo;
    init(token: string): void;
    onUpdateMessage(cb: onMessage): void;
    onDeleteMessage(cb: onMessage): void;
    onNewThread(cb: onThread): void;
    onUpdateThread(cb: onThread): void;
    onDeleteThread(cb: onThread): void;
    onUpdateCounting(cb: onUpdateCounting): void;
    whisper(threadId: number, userId: string): void;
    onWhisper(threadId: number, cb: onWhisper): void;
    offWhisper(threadId: number): void;
    private getBroadcastChannel;
    private get privateChannel();
}
declare const _default: MessageWebsocketService;
export default _default;
