using System.Collections.Generic;
using TINK.Model.Stations.StationNS.Operator;

namespace TINK.Model.Stations.StationNS
{
	/// <summary>
	/// Holds station information, i.e. static information like station name, station position and dynamic information like bikes available.
	/// </summary>
	public interface IStation
	{
		/// <summary> Holds the unique id of the station.c</summary>
		string Id { get; }

		/// <summary> Holds the group to which the station belongs.</summary>
		IEnumerable<string> Group { get; }

		/// <summary> Gets the name of the station.</summary>
		string StationName { get; }

		/// <summary> Holds the gps- position of the station.</summary>
		IPosition Position { get; }

		/// <summary> Holds operator related data.</summary>
		IData OperatorData { get; }

		/// <summary> Gets the count of bikes available at station. </summary>
		int? AvailableBikesCount { get; }

		/// <summary> Gets bike <see cref="BikeGroupCol.Entry"/> objects. </summary>
		/// <remarks> Each entry has a name, holds the count of available bikes at station and the group value.		/// </remarks>
		IBikeGroupCol BikeGroups { get; }
	}
}