export declare type Event = "any" | "line" | "status" | "starting" | "online" | "stopping" | "offline" | "login" | "logout" | "rconRunning" | "connect" | "disconnect";
export declare enum Status {
    Offline = "offline",
    Starting = "starting",
    Online = "online",
    Stopping = "stopping"
}
export declare class ObserverClient {
    private _options;
    private _socket;
    private _isReady;
    private _events;
    constructor(_options: {
        name: string;
        url: string;
        apiKey: string;
    });
    /** Connects to the ObserverMC Server */
    connect(): void;
    /** Set callbacks for events */
    on(event: "any", callbackFn: (serverName: string, event: {
        event: string;
        data: any;
    }) => any): any;
    on(event: "line", callbackFn: (serverName: string, line: string) => any): any;
    on(event: "status", callbackFn: (serverName: string, status: Status) => any): any;
    on(event: "starting", callbackFn: (serverName: string, data: {
        time: string;
        version: string;
    }) => any): any;
    on(event: "online", callbackFn: (serverName: string, data: {
        time: string;
        run: string;
    }) => any): any;
    on(event: "stopping", callbackFn: (serverName: string, data: {
        time: string;
    }) => any): any;
    on(event: "offline", callbackFn: (serverName: string, data: {
        time: string;
    }) => any): any;
    on(event: "login", callbackFn: (serverName: string, data: {
        time: string;
        user: string;
        ip: string;
        port: string;
        entity: string;
        world: string;
        x: string;
        y: string;
        z: string;
    }) => any): any;
    on(event: "logout", callbackFn: (serverName: string, data: {
        time: string;
        user: string;
    }) => any): any;
    on(event: "rconRunning", callbackFn: (serverName: string, data: {
        time: string;
        ip: string;
        port: string;
    }) => any): any;
    on(event: "line", callbackFn: (line: string) => any): any;
    on(event: "connect", callbackFn: (error?: string) => any): any;
    on(event: "disconnect", callbackFn: () => any): any;
    /** Start a server */
    start(serverName: string): Promise<boolean>;
    /** Stop a server */
    stop(serverName: string): Promise<boolean>;
    /** Send a console command to a server */
    console(serverName: string, command: string): Promise<boolean>;
    /** Get an online player list from a server */
    getOnlinePlayers(serverName: string): Promise<string[]>;
    /** Gets a server status */
    getStatus(serverName: string): Promise<Status>;
    /** Control the server whitelist */
    whitelist(serverName: string, action: "list" | "add" | "remove", username?: string): Promise<{
        uuid: string;
        name: string;
    }[] | boolean>;
    private authenticate;
    /** Check if client is ready to send commands */
    get isReady(): boolean;
    get name(): string;
}
