import { MinecraftServerWhitelist } from "./MinecraftServerWhitelist";
import { MinecraftServerOptions } from "./MinecraftServerOptions";
import { MinecraftServerProperties } from "./MinecraftServerProperties";
export declare enum Status {
    Offline = "offline",
    Starting = "starting",
    Online = "online",
    Stopping = "stopping"
}
export declare class MinecraftServer {
    /** JServer Options */
    private _config;
    /** Checks if the stop timeout is enabled */
    private _stopTimeoutEnabled;
    /** Stop server timeout */
    private _stopTimeout;
    /** Checks if the timeout was arleady cleared */
    private _stopTimeoutCleared;
    /** Locks the start to prevent starting the server more than once */
    private _startlock;
    /** Events that the server emits */
    private _events;
    /** Script Server instance */
    private _scriptServer;
    /** Online player list */
    private _online;
    /** Server status */
    private _status;
    /** Server stop timeout in minutes */
    private _timeout;
    /** Event parser */
    private _eventParser;
    /** Server properties */
    private _properties;
    /** Whitelist */
    private _whitelist;
    constructor(options: MinecraftServerOptions);
    /** Stars the stop timeout */
    private _startTimeout;
    /** Clears the stop timeout */
    private _clearTimeout;
    /** Event emitted everytime the server status changes */
    onStatusChanged(callback: (code: Status) => void): void;
    /** Event emitted everytime a user joins */
    onUserJoined(callback: (username: String) => void): void;
    /** Event emitted everytime a user leaves */
    onUserLeaved(callback: (username: String) => void): void;
    /** Event emitted for every line in the console output */
    onConsoleLine(callback: (line: string) => void): void;
    /** Event emitted when the rcon is running */
    onRconRunning(callback: () => void): void;
    /** Event emitted on any event */
    onEvent(callback: (event: string, data: any) => void): void;
    /** Starts the server */
    start(): Promise<boolean>;
    onConsole(line: string): void;
    /** Send a console command */
    console(command: string): boolean;
    /** Stops the server */
    stop(): boolean;
    /** Server status */
    get status(): Status;
    /** Online player list */
    get onlinePlayers(): string[];
    /** Sets the server status */
    private _setStatus;
    get name(): string;
    get config(): MinecraftServerOptions;
    get whitelist(): MinecraftServerWhitelist;
    get properties(): MinecraftServerProperties;
}
