/// Buckets the input by time range into equally sized buckets.
/// The number of buckets is determined by the maxPoints parameter.
/// Returns a CartesianPlot.
#[derive(
    Debug,
    Clone,
    conjure_object::serde::Serialize,
    conjure_object::serde::Deserialize,
    PartialEq,
    Eq,
    PartialOrd,
    Ord,
    Hash
)]
#[serde(crate = "conjure_object::serde")]
#[conjure_object::private::staged_builder::staged_builder]
#[builder(crate = conjure_object::private::staged_builder, update, inline)]
pub struct TemporalDecimateStrategy {
    #[serde(rename = "xAggregation")]
    x_aggregation: super::ScatterTemporalAggregation,
    #[serde(rename = "yAggregation")]
    y_aggregation: super::ScatterTemporalAggregation,
}
impl TemporalDecimateStrategy {
    /// Constructs a new instance of the type.
    #[inline]
    pub fn new(
        x_aggregation: super::ScatterTemporalAggregation,
        y_aggregation: super::ScatterTemporalAggregation,
    ) -> Self {
        Self::builder().x_aggregation(x_aggregation).y_aggregation(y_aggregation).build()
    }
    /// The strategy to use for aggregating the x values in each bucket.
    #[inline]
    pub fn x_aggregation(&self) -> &super::ScatterTemporalAggregation {
        &self.x_aggregation
    }
    /// The strategy to use for aggregating the y values in each bucket.
    #[inline]
    pub fn y_aggregation(&self) -> &super::ScatterTemporalAggregation {
        &self.y_aggregation
    }
}
