use async_trait::async_trait;
use crate::api_responses::{GetDevListData, GetDevRealKpiDataInverterItem, GetDevRealKpiDataPowerSensorItem, GetStationData, RealtimeData};
use crate::errors::Error;
use mockall::automock;
#[automock]
#[async_trait]
pub trait HuaweiClient: Sync + Send {
async fn get_station_list(&self) -> Result<Vec<GetStationData>, Error>;
async fn get_realtime_station_data(&self, station_code: &str) -> Result<RealtimeData, Error>;
async fn get_device_list(&self, station_code: &str) -> Result<Vec<GetDevListData>, Error>;
async fn get_realtime_residential_inverter_data(
&self,
device_id: i64,
) -> Result<GetDevRealKpiDataInverterItem, Error>;
async fn get_realtime_power_sensor_data(
&self,
device_id: i64,
) -> Result<GetDevRealKpiDataPowerSensorItem, Error>;
}