import type { IRoomCache } from '../matchmaker/LocalDriver/LocalDriver.ts';
import type { Client } from '../Transport.ts';
import { Room } from '../Room.ts';
type LobbyClient = Client<{
    messages: {
        rooms: IRoomCache[];
        '+': [roomId: string, room: IRoomCache];
        '-': string;
    };
}>;
export interface FilterInput {
    name?: string;
    metadata?: any;
}
export interface LobbyOptions {
    filter?: FilterInput;
}
export declare class LobbyRoom<Metadata = any> extends Room {
    rooms: IRoomCache<Metadata>[];
    unsubscribeLobby: () => void;
    clientOptions: {
        [sessionId: string]: LobbyOptions;
    };
    messages: {
        filter: (client: LobbyClient, filter: FilterInput) => void;
    };
    onCreate(options: any): Promise<void>;
    onJoin(client: LobbyClient, options: LobbyOptions): void;
    onLeave(client: LobbyClient): void;
    onDispose(): void;
    protected filterItemsForClient(options: LobbyOptions): IRoomCache<Metadata>[];
    protected filterItemForClient(room: IRoomCache, filter?: LobbyOptions['filter']): boolean;
}
export {};
