import "./polyfills"; import { Doc } from "yjs"; import type { RoomStatus, RoomMember, AccessLevel, RoomServices, RoomState } from "./types"; import type { ToDeviceEvent } from "./presence"; export interface RoomDelegate { roomId: string; name: string; } export declare class Room { readonly id: string; readonly doc: Doc; private readonly services; private provider; private connectPromise; private _state; private listeners; constructor(services: RoomServices, roomId: string); get state(): RoomState; get status(): RoomStatus; get canEdit(): boolean; get isConnected(): boolean; get name(): string | null; get userId(): string | null; get userDisplayName(): string | null; subscribe(listener: (state: RoomState) => void): () => void; readonly members: { list: () => Promise; invite: (userId: string, access: AccessLevel) => Promise; setAccess: (userId: string, access: AccessLevel) => Promise; remove: (userId: string) => Promise; }; readonly delegates: { list: () => Promise; add: (delegateRoomId: string) => Promise; remove: (delegateRoomId: string) => Promise; }; readonly toDevice: { send: (eventType: string, content: unknown) => Promise; poll: (sinceToken: string | null) => Promise<{ events: ToDeviceEvent[]; nextBatch: string; }>; }; /** * Connects the CRDT provider for this room. * * Guarantee on resolve: * - Initial room document is available locally. * - `name` and `canEdit` have been refreshed at least once. * - `status === "connected"`. */ connect(): Promise; disconnect(): void; dispose(): void; refresh(): Promise; rename(name: string): Promise; /** * Ensures the local user has joined this room. * * Guarantee on resolve: * - Matrix membership for the local user is "join". * * Retry behavior: * - Throws on permission/network failures. * - Callers should retry on transient failures. */ ensureJoined(): Promise; /** * Ensures the room is app-ready. * * Guarantee on resolve: * - User is joined (`ensureJoined`). * - Initial CRDT document is available (`connect` completed). * - `name` and `canEdit` have been refreshed at least once. * - `status === "connected"`. * * Retry behavior: * - Throws on permission/network/provider failures. * - Callers should retry on transient failures. */ ensureReady(): Promise; private get matrixClient(); /** * matrix-crdt@0.2.1-alpha.1 uses a legacy authedRequest signature: * authedRequest(undefined, method, path, query, body, opts). * * matrix-js-sdk@40 expects: * authedRequest(method, path, query, body, opts). */ private ensureMatrixHttpCompat; private emitState; private setStatus; private doConnect; private getRoomName; private getMembers; private isMember; private getRoomMemberIds; private getDelegateRoomIds; private pollToDeviceEvents; private canUserEdit; private accessToPowerLevel; private powerLevelToAccess; private setUserPowerLevel; } //# sourceMappingURL=Room.d.ts.map