using System.Threading.Tasks;
using TINK.Model.Bike;
using TINK.Model.Services.CopriApi;

namespace TINK.Model.Connector
{
    public interface IQuery
    {
        /// <summary> Gets all stations including postions.</summary>
        Task<Result<StationsAndBikesContainer>> GetBikesAndStationsAsync();

        /// <summary> Gets bikes occupied is a user is logged in. </summary>
        /// <returns>Collection of bikes.</returns>
        Task<Result<BikeCollection>> GetBikesOccupiedAsync();

        /// <summary> Gets bikes either bikes available if no user is logged in or bikes available and bikes occupied if a user is logged in. </summary>
        /// <returns>Collection of bikes.</returns>
        Task<Result<BikeCollection>> GetBikesAsync();
    }
}