using System;

namespace Elwig.Helpers.Weighing {
    /// <summary>
    /// Interface for controlling a industrial weighing scale (industrial terminal, "IT")
    /// </summary>
    public interface IScale : IDisposable {
        /// <summary>
        /// Manufacturer of the scale
        /// </summary>
        string Manufacturer { get; }

        /// <summary>
        /// Model of the scale
        /// </summary>
        string Model { get; }

        /// <summary>
        /// Unique identificator of the scale
        /// </summary>
        string ScaleId { get; }

        /// <summary>
        /// Internal identifying number of the scale in its system
        /// </summary>
        int InternalScaleNr { get; }

        /// <summary>
        /// Indicates if the scale is currently processing a request or not
        /// </summary>
        bool IsReady { get; }

        /// <summary>
        /// Indicates if the the clearance for filling the scale container has been granted
        /// </summary>
        bool HasFillingClearance { get; }

        /// <summary>
        /// The maximal configured weight limit of the scale in kg
        /// </summary>
        int? WeightLimit { get; }

        /// <summary>
        /// Where to log the requests and responses from the scale to
        /// </summary>
        string? LogPath { get; }
    }
}
