/**
 * 
 * 
 * @class Logger
 */
export class Logger {

    /**
     * Creates an instance of Logger.
     * @param {...string[]} path 
     * 
     * @memberOf Logger
     */
    constructor(...path: string[]);

    /**
     * Creates an instance of Logger.
     * @param {string[]} prefix the prefix prior to this path
     * @param {...string[]} path 
     * 
     * @memberOf Logger
     */
    constructor(prefix: string[], ...path: string[]);

    /**
     * 
     * 
     * @param {string} message 
     * 
     * @memberOf Logger
     */
    info(message: string);

    /**
     * 
     * 
     * @param {string} message 
     * 
     * @memberOf Logger
     */
    error(message: string);

    /**
     * 
     * 
     * @param {string} message 
     * 
     * @memberOf Logger
     */
    fatal(message: string);

    /**
     * 
     * 
     * @param {string} message 
     * 
     * @memberOf Logger
     */
    warn(message: string);
    
    /**
     * 
     * 
     * @param {string} message 
     * 
     * @memberOf Logger
     */
    debug(message: string);

    /**
     * 
     * 
     * @param {string} message 
     * 
     * @memberOf Logger
     */
    verbose(message: string);

    /**
     * 
     * 
     * @param {string} message 
     * 
     * @memberOf Logger
     */
    assert(message: string);

    /**
     * users should call this method to connect to LogServer
     * 
     * @static
     * @param {string} ws WebSocket Server, ie: ws://localhost:8809
     * 
     * @memberOf Logger
     */
    static connect(ws: string);

    /**
     * users should call this method to connect to LogServer
     * 
     * @static
     * @param {string} ws WebSocket Server, ie: ws://localhost:8809
     * @param {string} proto the communication protocol file, default to /log.proto
     * 
     * @memberOf Logger
     */
    static connect(ws: string, proto: string);

    /**
     * users should call this method to connect to LogServer
     * 
     * @static
     * @param {string} ws WebSocket Server, ie: ws://localhost:8809
     * @param {string} proto the communication protocol file, default to /log.proto
     * @param {boolean} reconnectable allow reconnect automatically while no connection or connection lost. This will print lots of error to console if unable to connect
     * 
     * @memberOf Logger
     */
    static connect(ws: string, proto: string, reconnectable: boolean);

}


declare module "remote-logger" {
    export = Logger;
}


