use crate::{DiscountCurve, FlatCurve, ForwardCurve, SpotCurve};
use derive_builder::Builder;
use time::Date;
use RustQuant_instruments::ExchangeRate;
use RustQuant_time::Calendar;
#[derive(Builder, Clone, Debug)]
pub struct MarketData<C>
where
C: Calendar,
{
#[builder(default)]
pub underlying_price: Option<f64>,
#[builder(default)]
pub exchange_rate: Option<ExchangeRate>,
#[builder(default)]
pub dividend_yield: Option<f64>,
#[builder(default)]
pub volatility: Option<f64>,
#[builder(default)]
pub spot_curve: Option<SpotCurve<Date, C>>,
#[builder(default)]
pub discount_curve: Option<DiscountCurve<Date, C>>,
#[builder(default)]
pub forward_curve: Option<ForwardCurve<Date, C>>,
#[builder(default)]
pub flat_curve: Option<FlatCurve<C>>,
}