import { AnnounceStyle } from './announce-style';
import { CollisionFlags } from './collision-flags';
import { DiscProperties } from './disc-properties';
import { Player } from './player';
import { Position } from './position';
import { RoomConfig } from './room-config';
import { Scores } from './scores';
import { DefaultStadium } from './default-stadium';
import { TeamID } from './team-id';
declare global {
    export interface Window {
        _room: Room;
        HBInit: (roomConfig: RoomConfig) => Room;
        onPlayerJoin: (player: Player) => void;
        onPlayerLeave: (player: Player) => void;
        onTeamVictory: (scores: Scores) => void;
        onPlayerChat: (player: Player, message: string) => void;
        onPlayerBallKick: (player: Player) => void;
        onTeamGoal: (team: TeamID) => void;
        onGameStart: (byPlayer: Player | null) => void;
        onGameStop: (byPlayer: Player | null) => void;
        onPlayerAdminChange: (changedPlayer: Player, byPlayer: Player | null) => void;
        onPlayerTeamChange: (changedPlayer: Player, byPlayer: Player | null) => void;
        onPlayerKicked: (kickedPlayer: Player, reason: string, ban: boolean, byPlayer: Player | null) => void;
        onGameTick: () => void;
        onGamePause: (byPlayer: Player | null) => void;
        onGameUnpause: (byPlayer: Player | null) => void;
        onPositionsReset: () => void;
        onPlayerActivity: (player: Player) => void;
        onStadiumChange: (newStadiumName: string, byPlayer: Player | null) => void;
        onKickRateLimitSet: (min: number, rate: number, burst: number, byPlayer: Player | null) => void;
    }
}
export declare class Room {
    private page;
    private config;
    constructor(config: RoomConfig);
    private openNewTab;
    private exposeFunctions;
    private createRoom;
    start(): Promise<void>;
    sendChat(message: string, targetId?: number | null): Promise<void>;
    setPlayerAdmin(playerId: number, admin: boolean): Promise<void>;
    setPlayerTeam(playerId: number, team: number): Promise<void>;
    kickPlayer(playerId: number, reason: string, ban: boolean): Promise<void>;
    clearBan(playerId: number): Promise<void>;
    clearBans(): Promise<void>;
    setScoreLimit(limit: number): Promise<void>;
    setTimeLimit(limitInMinutes: number): Promise<void>;
    setCustomStadium(stadiumFileContents: string): Promise<boolean>;
    setDefaultStadium(stadiumName: DefaultStadium): Promise<void>;
    setTeamsLock(locked: boolean): Promise<void>;
    setTeamColors(team: TeamID, angle: number, textColor: number, colors: number[]): Promise<void>;
    startGame(): Promise<void>;
    stopGame(): Promise<void>;
    pauseGame(pauseState: boolean): Promise<void>;
    getPlayer(playerId: number): Promise<Player | null>;
    getPlayerList(): Promise<Player[]>;
    getScores(): Promise<Scores | null>;
    getBallPosition(): Promise<Position | null>;
    startRecording(): Promise<void>;
    stopRecording(): Promise<Uint8Array | null>;
    setPassword(password: string | null): Promise<void>;
    setRequireRecaptcha(required: boolean): Promise<void>;
    reorderPlayers(playerIdList: number[], moveToTop: boolean): Promise<void>;
    sendAnnouncement(msg: string, targetId?: number | null, color?: number | null, style?: AnnounceStyle | null, sound?: number | null): Promise<void>;
    setKickRateLimit(min: number, rate: number, burst: number): Promise<void>;
    setPlayerAvatar(playerId: number, avatar: string | null): Promise<void>;
    setDiscProperties(discIndex: number, properties: Partial<DiscProperties>): Promise<void>;
    getDiscProperties(discIndex: number): Promise<DiscProperties | null>;
    setPlayerDiscProperties(playerId: number, properties: Partial<DiscProperties>): Promise<void>;
    getPlayerDiscProperties(playerId: number): Promise<DiscProperties | null>;
    getDiscCount(): Promise<number>;
    CollisionFlags: CollisionFlags;
    onPlayerJoin?(player: Player): void;
    onPlayerLeave?(player: Player): void;
    onTeamVictory?(scores: Scores): void;
    onPlayerChat?(player: Player, message: string): void;
    onPlayerBallKick?(player: Player): void;
    onTeamGoal?(team: TeamID): void;
    onGameStart?(byPlayer: Player | null): void;
    onGameStop?(byPlayer: Player | null): void;
    onPlayerAdminChange?(changedPlayer: Player, byPlayer: Player | null): void;
    onPlayerTeamChange?(changedPlayer: Player, byPlayer: Player | null): void;
    onPlayerKicked?(kickedPlayer: Player, reason: string, ban: boolean, byPlayer: Player | null): void;
    onGameTick?(): void;
    onGamePause?(byPlayer: Player | null): void;
    onGameUnpause?(byPlayer: Player | null): void;
    onPositionsReset?(): void;
    onPlayerActivity?(player: Player): void;
    onStadiumChange?(newStadiumName: string, byPlayer: Player | null): void;
    onRoomLink?(url: string): void;
    onKickRateLimitSet?(min: number, rate: number, burst: number, byPlayer: Player | null): void;
}
