import { Pubby } from "../../client";
import { PubbyModule } from "../../module";
import { User } from "../../models/user";
declare module "../../client" {
    interface Pubby {
        room: RoomModule;
    }
}
export declare class RoomModule extends PubbyModule {
    state: any;
    users: Map<string, User>;
    private readonly onUserUpdate$;
    private readonly onUserLeave$;
    constructor(client: Pubby);
    init(): void;
    join(slugOrId: string): Promise<void>;
    on(event: "load", ...cb: ((state: any) => void)[]): this;
    on(event: "user-join", ...cb: ((user: User) => void)[]): this;
    on(event: "user-update", ...cb: ((newUser: User, old: User) => void)[]): this;
    on(event: "user-leave", ...cb: ((user: User) => void)[]): this;
}
