using Hcs.Broker.Api.Payload.DeviceMetering;
using Hcs.Service.Async.DeviceMetering;

namespace Hcs.Broker.Api
{
    // http://open-gkh.ru/DeviceMeteringServiceAsync/
    public interface IDeviceMeteringApi
    {
        /// <summary>
        /// Экспорт истории показаний и поверок приборов учета пользователя, установленных в указанном доме
        /// </summary>
        /// <param name="payload">Пейлоад выборки ПУ</param>
        /// <param name="token">Токен отмены</param>
        /// <returns>Лицевые счета</returns>
        Task<IEnumerable<exportMeteringDeviceHistoryResultType>> ExportMeteringDeviceHistoryAsync(ExportMeteringDeviceHistoryPayload payload, CancellationToken token = default);

        /// <summary>
        /// Импорт показаний приборов учета
        /// </summary>
        /// <param name="values">Показания прибора учета</param>
        /// <param name="token">Токен отмены</param>
        /// <returns>true, если операция выполнена успешно, иначе - false</returns>
        Task<bool> ImportMeteringDeviceValuesAsync(importMeteringDeviceValuesRequestMeteringDevicesValues values, CancellationToken token = default);
    }
}
