#[derive(
    Debug,
    Clone,
    conjure_object::serde::Serialize,
    conjure_object::serde::Deserialize,
    conjure_object::private::DeriveWith
)]
#[serde(crate = "conjure_object::serde")]
#[derive_with(PartialEq, Eq, PartialOrd, Ord, Hash)]
#[conjure_object::private::staged_builder::staged_builder]
#[builder(crate = conjure_object::private::staged_builder, update, inline)]
pub struct CurveFitV2 {
    #[builder(custom(type = super::CurveFitTarget, convert = Box::new))]
    #[serde(rename = "target")]
    target: Box<super::CurveFitTarget>,
    #[builder(custom(type = super::CurveFitRange, convert = Box::new))]
    #[serde(rename = "fitRange")]
    fit_range: Box<super::CurveFitRange>,
    #[builder(custom(type = super::CurveFitV2Details, convert = Box::new))]
    #[serde(rename = "curveToFit")]
    curve_to_fit: Box<super::CurveFitV2Details>,
}
impl CurveFitV2 {
    /// Constructs a new instance of the type.
    #[inline]
    pub fn new(
        target: super::CurveFitTarget,
        fit_range: super::CurveFitRange,
        curve_to_fit: super::CurveFitV2Details,
    ) -> Self {
        Self::builder()
            .target(target)
            .fit_range(fit_range)
            .curve_to_fit(curve_to_fit)
            .build()
    }
    /// Target to fit the equation against.
    #[inline]
    pub fn target(&self) -> &super::CurveFitTarget {
        &*self.target
    }
    /// The range to fit the curve over
    #[inline]
    pub fn fit_range(&self) -> &super::CurveFitRange {
        &*self.fit_range
    }
    /// The curve type to fit against the target series.
    #[inline]
    pub fn curve_to_fit(&self) -> &super::CurveFitV2Details {
        &*self.curve_to_fit
    }
}
