@pubby/sdk
Version:
Pubby Development Kit
35 lines (34 loc) • 1.32 kB
TypeScript
import { Pubby } from "../../client";
import { PubbyStream } from "../../lib/streams";
import { PubbyModule } from "../../module";
import { User } from "../../models/user";
import { RoomUpdateResponse, UserLeaveResponse, UserSetResponse } from "../../websocket/incoming";
import { Room } from "../../models/room";
declare module "../../client" {
interface Pubby {
room: RoomModule;
}
}
export interface RoomState {
room: Room | null;
users: Map<string, User>;
usersRoles: Map<string, Set<string>>;
}
export declare class RoomModule extends PubbyModule {
state$: PubbyStream<RoomState, RoomState>;
userUpdate$: PubbyStream<UserSetResponse>;
userLeave$: PubbyStream<UserLeaveResponse>;
roomUpdate$: PubbyStream<RoomUpdateResponse>;
get state(): RoomState | {
room: any;
users: Map<any, any>;
usersRoles: Map<any, any>;
};
constructor(client: Pubby);
init(): void;
join(slug: string, password?: 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;
}