import { type CcmpServerBuiltinEvents, type Player as CcmpServerPlayer, type Vehicle as CcmpServerVehicle } from "@classic-mp/types/server";
import { type IEventsManager } from "../../common/events/IEventsManager";
import { type IServerInternalEvents } from "../../common/events/types";
import { type IClientToServerEvents, type IServerToClientEvents } from "../../../../shared";
import { type CCMPPlayer } from "../../../entities/ccmp/player/CCMPPlayer";
export interface ICCMPServerVehicleEvents {
    playerEnterVehicle: (player: CcmpServerPlayer, vehicle: CcmpServerVehicle, seat: number) => void;
    playerExitVehicle: (player: CcmpServerPlayer, vehicle: CcmpServerVehicle, seat: number) => void;
}
export interface ICCMPServerInternalEvents extends IServerInternalEvents, CcmpServerBuiltinEvents, ICCMPServerVehicleEvents {
}
export declare class CCMPEventsManager implements IEventsManager {
    onInternal(events: Partial<ICCMPServerInternalEvents>): void;
    offInternal<K extends keyof IServerInternalEvents>(eventName: K, listener: IServerInternalEvents[K]): void;
    emitInternal<K extends keyof IServerInternalEvents>(eventName: K, ...args: Parameters<IServerInternalEvents[K]>): void;
    onClient(events: Partial<IClientToServerEvents>): void;
    offClient<K extends keyof IClientToServerEvents>(eventName: K, listener: IClientToServerEvents[K]): void;
    emitClient<K extends keyof IServerToClientEvents>(player: CCMPPlayer, eventName: K, ...args: Parameters<IServerToClientEvents[K]>): void;
    emitAllClients<K extends keyof IServerToClientEvents>(eventName: K, ...args: Parameters<IServerToClientEvents[K]>): void;
    private _getRockModPlayer;
}
