use super::keyframe::Keyframe;
use crate::schema::helpers::int_boolean::BoolInt;
use serde::de::DeserializeOwned;
use serde::{Deserialize, Serialize};
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
pub struct AnimatedProperty<StaticType> {
#[serde(rename = "ix")]
#[serde(skip_serializing_if = "Option::is_none")]
pub property_index: Option<f64>,
#[serde(rename = "a")]
#[serde(skip_serializing_if = "Option::is_none")]
pub animated: Option<BoolInt>,
#[serde(rename = "x")]
#[serde(skip_serializing_if = "Option::is_none")]
pub expression: Option<String>,
#[serde(rename = "sid")]
#[serde(skip_serializing_if = "Option::is_none")]
pub slot_id: Option<String>,
#[serde(rename = "k")]
#[serde(bound = "StaticType: Serialize + DeserializeOwned")]
pub value: AnimatedPropertyK<StaticType>,
}
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
#[serde(untagged)]
pub enum AnimatedPropertyK<StaticType> {
AnimatedValue(Vec<Keyframe>),
Static(StaticType),
}