//! # Pricing
//!
//! $$
//! V_0=\mathbb E^{\mathbb Q}\!\left[e^{-\int_0^T r_tdt}\,\Pi(X_T)\right]
//! $$
//!
pub mod asian;
pub mod autocallable;
pub mod barrier;
pub mod basket;
#[cfg(feature = "openblas")]
pub mod bermudan;
pub mod bjerksund_stensland;
pub mod breeden_litzenberger;
pub mod bsm;
pub mod cgmysv;
pub mod chooser;
pub mod cliquet;
pub mod compound;
pub mod digital;
pub mod dupire;
pub mod engines;
pub mod execution_cost;
pub mod finite_difference;
pub mod fourier;
pub mod heston;
pub mod heston_stoch_corr;
pub mod kirk;
pub mod lookback;
pub mod malliavin_gbm;
pub mod malliavin_greeks;
#[cfg(feature = "openblas")]
pub mod malliavin_thalmaier;
pub mod merton_jump;
pub mod pnl;
pub mod rainbow;
pub mod rbergomi;
pub mod regime_switching;
pub mod sabr;
pub mod slv;
pub mod snell_envelope;
pub mod spread;
pub mod variance_swap;

// Re-export Fourier infrastructure and model structs.
// Re-export commonly used pricers.
pub use autocallable::AutocallablePricer;
pub use autocallable::KnockInStyle;
pub use basket::ArithmeticBasketLevyPricer;
pub use basket::BasketAverageType;
pub use basket::GeometricBasketPricer;
#[cfg(feature = "openblas")]
pub use basket::McBasketPricer;
#[cfg(feature = "openblas")]
pub use bermudan::BermudanLsmPricer;
pub use bjerksund_stensland::BjerksundStensland2002Pricer;
pub use bsm::BSMCoc;
pub use bsm::BSMPricer;
pub use cgmysv::CgmysvModel;
pub use cgmysv::CgmysvParams;
pub use cgmysv::CgmysvPricer;
pub use cgmysv::McResult;
pub use chooser::ComplexChooserPricer;
pub use chooser::ForwardStartPricer;
pub use chooser::SimpleChooserPricer;
pub use cliquet::CliquetPricer;
pub use cliquet::McCliquetPricer;
pub use compound::CompoundPricer;
pub use compound::CompoundType;
pub use digital::AssetOrNothingPricer;
pub use digital::CashOrNothingPricer;
pub use digital::GapPricer;
pub use digital::SuperSharePricer;
pub use engines::AnalyticBSEngine;
pub use engines::AnalyticHestonEngine;
pub use engines::HestonStaticParams;
pub use execution_cost::execution_adjusted_price;
pub use fourier::BSMFourier;
pub use fourier::BatesFourier;
pub use fourier::CGMYFourier;
pub use fourier::CarrMadanPricer;
pub use fourier::Cumulants;
pub use fourier::DoubleHestonFourier;
pub use fourier::FourierModelExt;
pub use fourier::GilPelaezPricer;
pub use fourier::HKDEFourier;
pub use fourier::HestonFourier;
pub use fourier::KouFourier;
pub use fourier::LewisPricer;
pub use fourier::MertonJDFourier;
pub use fourier::VarianceGammaFourier;
pub use heston::HestonPricer;
pub use heston_stoch_corr::HscmModel;
pub use kirk::KirkSpreadPricer;
#[cfg(feature = "openblas")]
pub use rainbow::McRainbowPricer;
pub use rainbow::RainbowPayoff;
pub use rainbow::StulzRainbowPricer;
pub use rbergomi::RBergomiPricer;
pub use sabr::SabrModel;
pub use slv::HestonSlvParams;
pub use slv::HestonSlvPricer;
pub use slv::LeverageSurface;
pub use slv::calibrate_from_dupire;
pub use slv::calibrate_leverage;
pub use spread::MargrabePricer;
pub use spread::McSpreadPricer;
pub use variance_swap::VarianceSwapPricer;
pub use variance_swap::VolatilitySwapPricer;
pub use variance_swap::replication_weights;
