using System;
using System.Threading.Tasks;
namespace Elwig.Helpers.Weighing {
    /// 
    /// Interface for controlling a weighing scale which responds to commands sent to it
    /// 
    public interface ICommandScale : IScale {
        /// 
        /// Get the current weight on the scale without performing a weighing process
        /// 
        /// Result of the weighing process (probably without a weighing id)
        Task GetCurrentWeight();
        /// 
        /// Perform a weighing process
        /// 
        /// Result of the weighing process (including a weighing id)
        Task Weigh();
        /// 
        /// Empty the scale container or grant clearance to do so
        /// 
        Task Empty();
        /// 
        /// Grant clearance to fill the scale container
        /// 
        Task GrantFillingClearance();
        /// 
        /// Revoke clearance to fill the scale container
        /// 
        Task RevokeFillingClearance();
        /// 
        /// Try to set date and time on the scale
        /// 
        Task SetDateAndTime(DateTime dateTime);
    }
}