use serde::{Deserialize, Serialize};
use crate::tapo_vendor::responses::TapoResponseExt;
use crate::tapo_vendor::utils::ok_or_default;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(any(), pyo3::prelude::pyclass(from_py_object, get_all))]
pub struct DeviceUsageResult {
pub time_usage: UsageByPeriodResult,
}
impl TapoResponseExt for DeviceUsageResult {}
#[cfg(any())]
crate::tapo_vendor::impl_to_dict!(DeviceUsageResult);
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(any(), pyo3::prelude::pyclass(from_py_object, get_all))]
pub struct UsageByPeriodResult {
#[serde(deserialize_with = "ok_or_default")]
pub today: Option<u64>,
#[serde(deserialize_with = "ok_or_default")]
pub past7: Option<u64>,
#[serde(deserialize_with = "ok_or_default")]
pub past30: Option<u64>,
}
#[cfg(any())]
crate::tapo_vendor::impl_to_dict!(UsageByPeriodResult);