import { TypedEmitter } from "tiny-typed-emitter";
import { ChatManager, MapsManager, PlayersManager, ScoresManager, ServerManager, TeamsManager } from "./managers/index.js";
import { Checkpoint, EndRoundEnd, Message, Player, PlayerStatus, Round, Scores, TeamColor, WarmupRound } from "./structures/index.js";
interface JsPlanetEvents {
    checkpoint: (checkpoint: Checkpoint) => unknown;
    disconnect: (reason: null | string) => unknown;
    endRoundEnd: (round: EndRoundEnd) => unknown;
    endRoundStart: (round: Round) => unknown;
    message: (message: Message) => unknown;
    playerConnect: (player: Player) => unknown;
    playerDisconnect: (player: Player) => unknown;
    playerStatusChange: (player: Player, oldStatus: PlayerStatus, newStatus: PlayerStatus) => unknown;
    playerTeamChange: (player: Player, oldTeam: TeamColor, newTeam: TeamColor) => unknown;
    race: (checkpoint: Checkpoint) => unknown;
    ready: () => unknown;
    scores: (scores: Scores) => unknown;
    startRoundEnd: (round: Round) => unknown;
    startRoundStart: (round: Round) => unknown;
    warmupEnd: () => unknown;
    warmupRoundEnd: (warmupRound: WarmupRound) => unknown;
    warmupRoundStart: (warmupRound: WarmupRound) => unknown;
    warmupStart: () => unknown;
}
declare class JsPlanet extends TypedEmitter<JsPlanetEvents> {
    chatManager: ChatManager;
    mapsManager: MapsManager;
    playersManager: PlayersManager;
    scoresManager: ScoresManager;
    serverManager: ServerManager;
    teamsManager: TeamsManager;
    private remote;
    constructor(host: string, port: number, user: string, password: string);
    connect(): Promise<boolean>;
    disconnect(reason?: string): void;
    private forwardEvents;
}
export default JsPlanet;
