import { Pubby } from "../../client";
import { PubbyStream } from "../../lib/streams";
import { PubbyModule } from "../../module";
import { ChatMessage, ChatMessageResponse } from "../../websocket/incoming";
import { PubbyMessage } from "./message";
declare module "../../client" {
    interface Pubby {
        chat: ChatModule;
    }
}
export declare class ChatModule extends PubbyModule {
    onUpdate$: PubbyStream<ChatMessageResponse>;
    onMessage$: PubbyStream<ChatMessageResponse>;
    constructor(pubby: Pubby);
    init(): void;
    createMessage(message: Partial<ChatMessage>): PubbyMessage;
    remove(messageId: string): Promise<unknown>;
    send(text: string): Promise<PubbyMessage>;
    send(message: PubbyMessage): Promise<PubbyMessage>;
    on(event: "update", ...listeners: ((message: PubbyMessage) => void)[]): this;
    on(event: "message", ...listeners: ((message: PubbyMessage) => void)[]): this;
}
