import EventEmitter from 'events';
import type { OHD } from './OHD';
import type { Teams } from './definitions/Teams';
import { PlayerKicked } from './definitions/PlayerKicked';
import { PlayerBanned } from './definitions/PlayerBanned';
type PlayerProps = {
    id: number;
    steam64: string | null;
    name: string;
    created?: Date;
};
/**
 * Generic Player Object
 */
export declare class Player {
    id: PlayerProps['id'];
    steam64: PlayerProps['steam64'];
    name: PlayerProps['name'];
    created: Date;
    _events: EventEmitter;
    protected _controller: OHD;
    constructor(controller?: OHD | PlayerProps | null, $b?: PlayerProps);
    /**
     * The player has Left the Server
     */
    on(event: 'PLAYER_LEFT', cb: () => void): EventEmitter;
    /**
     * The player has been cleared out of memory
     */
    on(event: 'PLAYER_DELETED', cb: () => void): EventEmitter;
    /**
     * The player has been Kicked
     */
    on(event: 'PLAYER_KICKED', cb: (event: PlayerKicked) => void): EventEmitter;
    /**
     * The player has been Banned
     */
    on(event: 'PLAYER_BANNED', cb: (event: PlayerBanned) => void): EventEmitter;
    removeListener(event: Parameters<EventEmitter['removeListener']>[0], cb: Parameters<EventEmitter['removeListener']>[1]): EventEmitter;
    /**Is the player a Bot */
    get isBot(): boolean;
    protected get hasController(): boolean;
    protected controllerReject(): Promise<{
        success: false;
        reason: string;
    }>;
    /**Kick the current `Player` */
    kick(reason?: string): Promise<{
        success: false;
        reason: string;
    }> | Promise<PlayerKicked>;
    /**Ban the current `Player` */
    ban(duration?: number, reason?: string): Promise<{
        success: false;
        reason: string;
    }> | Promise<PlayerBanned>;
    /**Set the team of the current `Player` */
    setTeam(teamId: 0 | 1 | Teams): Promise<unknown>;
    /**
     * Give the user Admin Access
     */
    addAdmin(): Promise<import("./definitions/CommandSuccess").CommandSuccess>;
    /**
     * Revoke the users Admin Access
     */
    removeAdmin(): Promise<import("./definitions/CommandSuccess").CommandSuccess>;
}
export {};
