use crate::resource;
use serde::Deserialize;
#[derive(Clone, Debug, Eq, PartialEq, Hash, Deserialize)]
pub struct Capabilities {
pub lights: Info,
pub groups: Info,
pub sensors: SensorsInfo,
pub scenes: ScenesInfo,
pub schedules: Info,
pub rules: RulesInfo,
pub resourcelinks: Info,
pub streaming: StreamingInfo,
pub timezones: Timezones,
}
impl resource::Resource for Capabilities {}
#[derive(Clone, Debug, Eq, PartialEq, Hash, Deserialize)]
pub struct Info {
pub available: usize,
pub total: usize,
}
#[derive(Clone, Debug, Eq, PartialEq, Hash, Deserialize)]
pub struct SensorsInfo {
pub available: usize,
pub total: usize,
pub clip: Info,
pub zll: Info,
pub zgp: Info,
}
#[derive(Clone, Debug, Eq, PartialEq, Hash, Deserialize)]
pub struct ScenesInfo {
pub available: usize,
pub total: usize,
#[serde(rename = "lightstates")]
pub light_states: Info,
}
#[derive(Clone, Debug, Eq, PartialEq, Hash, Deserialize)]
pub struct RulesInfo {
pub available: usize,
pub total: usize,
pub conditions: Info,
pub actions: Info,
}
#[derive(Clone, Debug, Eq, PartialEq, Hash, Deserialize)]
pub struct StreamingInfo {
pub available: usize,
pub total: usize,
pub channels: usize,
}
#[derive(Clone, Debug, Eq, PartialEq, Hash, Deserialize)]
pub struct Timezones {
pub values: Vec<String>,
}