# Source: bemap-model/bemap-chargingStationStep.js

    /**
     * BeNomad BeMap JavaScript API - ChargingStationStep class
     */

    /**
     * @classdesc
     * Base class for charging station step used by EVSE routing calculation.
     * @public
     * @constructor
     * @param {Object} options To set all fields of this class.
     */
    bemap.ChargingStationStep = function(options) {
      var opts = options || {};

      /**
       * Unique identifier.
       * @type {String}
       * @protected
       */
      this.id = opts.id ? opts.id : undefined;

      /**
       * Provider name used by BeMap (bgis).
       * @type {String}
       * @protected
       */
      this.providerName = opts.providerName ? opts.providerName : undefined;

      /**
       * Name of the original provider.
       * @type {String}
       * @protected
       */
      this.sourceProvider = opts.sourceProvider ? opts.sourceProvider : undefined;

      /**
       * Brand of pool.
       * @type {String}
       * @protected
       */
      this.brand = opts.brand ? opts.brand : undefined;

      /**
       * Name of pool.
       * @type {String}
       * @protected
       */
      this.nameOfPool = opts.nameOfPool ? opts.nameOfPool : undefined;

      /**
       * Type of site.
       * @type {String}
       * @protected
       */
      this.siteType = opts.siteType ? opts.siteType : undefined;

      /**
       * Accessibility of pool.
       * @type {String}
       * @protected
       */
      this.accessibility = opts.accessibility ? opts.accessibility : undefined;

      /**
       * Availability status.
       * @type {String}
       * @protected
       */
      this.availabilityStatus = opts.availabilityStatus ? opts.availabilityStatus : undefined;

      /**
       * Coordinate of entrance gateway to pool access.
       * @type {bemap.Coordinate}
       * @protected
       */
      this.entrance = opts.entrance ? opts.entrance : undefined;

      /**
       * Pool address, country code.
       * @type {String}
       * @protected
       */
      this.countryCode = opts.countryCode ? opts.countryCode : undefined;

      /**
       * Pool address, country.
       * @type {String}
       * @protected
       */
      this.country = opts.country ? opts.country : undefined;

      /**
       * Pool address, state.
       * @type {String}
       * @protected
       */
      this.state = opts.state ? opts.state : undefined;

      /**
       * Pool address, county.
       * @type {String}
       * @protected
       */
      this.county = opts.county ? opts.county : undefined;

      /**
       * Pool address, city.
       * @type {String}
       * @protected
       */
      this.city = opts.city ? opts.city : undefined;

      /**
       * Pool address, postal code.
       * @type {String}
       * @protected
       */
      this.postalCode = opts.postalCode ? opts.postalCode : undefined;

      /**
       * Pool address, district.
       * @type {String}
       * @protected
       */
      this.district = opts.district ? opts.district : undefined;

      /**
       * Pool address, road number.
       * @type {String}
       * @protected
       */
      this.roadNumber = opts.roadNumber ? opts.roadNumber : undefined;

      /**
       * Pool address, street.
       * @type {String}
       * @protected
       */
      this.street = opts.street ? opts.street : undefined;

      /**
       * Pool address, street number.
       * @type {String}
       * @protected
       */
      this.streetNumber = opts.streetNumber ? opts.streetNumber : undefined;

      /**
       * Pool address, address complement.
       * @type {String}
       * @protected
       */
      this.addressComplement = opts.addressComplement ? opts.addressComplement : undefined;

      /**
       *  Address floor number.
       * @type {String}
       * @protected
       */
      this.floorNumber = opts.floorNumber ? opts.floorNumber : undefined;

      /**
       * Phone number.
       * @type {String}
       * @protected
       */
      this.phoneNumber = opts.phoneNumber ? opts.phoneNumber : undefined;

      /**
       * List of opening hours.
       * @type {String}
       * @protected
       */
      this.openingHours = opts.openingHours ? opts.openingHours : undefined;

      /**
       * @type {String}
       * @protected
       */
      this.connectorType = opts.connectorType ? opts.connectorType : undefined;

      /**
       * Nominal power in kW.
       * @type {double}
       * @protected
       */
      this.maxNominalPower = opts.maxNominalPower ? opts.maxNominalPower : undefined;

      /**
       * Summarized of number of charging point present in pool.
       * @type {int}
       * @protected
       */
      this.numberOfChargingPoint = opts.numberOfChargingPoint ? opts.numberOfChargingPoint : undefined;

      /**
       * Comment.
       * @type {String}
       * @protected
       */
      this.comment = opts.comment ? opts.comment : undefined;

      /**
       * The energy needed to come from the previous stop (in kWh).
       * @type {double}
       * @protected
       */
      this.consumedFromPreviousStop = opts.consumedFromPreviousStop ? opts.consumedFromPreviousStop : undefined;

      /**
       * The battery charge level (in %) of the vehicle at the given charge point.
       * @type {float}
       * @protected
       */
      this.batteryChargeLevel = opts.batteryChargeLevel ? opts.batteryChargeLevel : undefined;

      /**
       * The estimated charging time, based on energy vehicle profile (in seconds)
       * or -1 in case of error (that is, if battery capacity = 0, or Connector
       * power <= 0, or Maximum charge power <= 0).
       * @type {long}
       * @protected
       */
      this.chargingTime = opts.chargingTime ? opts.chargingTime : undefined;

    };