export interface RoomParticipant {
    socketId: string;
    id: string;
    name: string;
    initials: string;
    role: 'auditor' | 'client' | 'observer';
    joinedAt: number;
    leftAt?: number;
}
export interface RoomState {
    roomId: string;
    auditId: string;
    createdAt: number;
    participants: Map<string, RoomParticipant>;
    attendance: RoomParticipant[];
}
export declare class RoomRegistry {
    private readonly log;
    private rooms;
    getOrCreate(roomId: string, auditId: string): RoomState;
    get(roomId: string): RoomState | undefined;
    addParticipant(roomId: string, p: RoomParticipant): RoomState | undefined;
    removeParticipant(roomId: string, socketId: string): RoomParticipant | undefined;
    findRoomBySocket(socketId: string): RoomState | undefined;
    listParticipants(roomId: string): Omit<RoomParticipant, 'socketId'>[];
    attendanceReport(roomId: string): {
        roomId: string;
        auditId: string;
        startedAt: number;
        endedAt: number;
        durationMs: number;
        participants: {
            id: string;
            name: string;
            role: "auditor" | "client" | "observer";
            joinedAt: number;
            leftAt: number;
            durationMs: number;
        }[];
    } | null;
}
