text: /**
   * An abstract class that specifies common methods for different types
   * of authentication. Concrete authentication types must extend
   * this class and override it's methods
   *
   * @abstract
   * @class
   * @author Teodossi Dossev
   */
  export class Authentication {
    /**
     * Constructor.
     * @param {ClientConfig} clientConfig
     */
    constructor(clientConfig) {
      this.clientConfig = clientConfig;
    }
    /**
     * Returns authentication type related {@link HttpRequestBuilder}
     * login request builder
    */
    getLoginRequestBuilder() {
      throw new Error('Method #getLoginRequestBuilder() must be implemented!');
    }
  
    /**
     * Returns authentication type related {string}
     * token from response
     */
    getResponseAuthToken() {
      throw new Error('Method #getResponseAuthToken() must be implemented!');
    }
  }
  
  module.exports = Authentication;
  