import { GameSessionOptions } from "@lobstar/core";
import type { CustomMessageHandler, ErrorHandler, KickedHandler } from "./types";
export type GameLobbyOptions = {
    options?: GameSessionOptions;
    onMessage?: CustomMessageHandler;
    onError?: ErrorHandler;
    onKicked?: KickedHandler;
};
/**
 * Main hook that provides a complete interface to the game session
 */
export declare function useGameLobby(lobbyOptions?: GameLobbyOptions): {
    host: (playerName: string, lobbyId?: string) => Promise<string>;
    join: (lobbyId: string, playerName: string) => Promise<void>;
    leave: () => void;
    setReady: (isReady: boolean) => void;
    startGame: () => void;
    endGame: () => void;
    kickPlayer: (playerId: string) => void;
    sendMessage: (peerId: string, data: unknown) => void;
    sendMessageToHost: (data: unknown) => void;
    broadcastMessage: (data: unknown, excludeSelf?: boolean) => void;
    state: import("@lobstar/core").SessionState | null;
    isConnected: boolean;
    isPlaying: boolean;
    isInLobby: boolean;
    isGameOver: boolean;
    areAllPlayersReady: boolean;
    playersList: import("@lobstar/core").Player[];
    self: import("@lobstar/core").Player | null;
    hostPlayer: import("@lobstar/core").Player | null;
    isHost: boolean;
    maxPlayers: number;
    session: import("@lobstar/core").GameSessionManager | null;
};
