1#![no_std]
2#![forbid(unsafe_code)]
3#![deny(missing_docs)]
4
5pub mod amm;
20pub mod day_count;
21pub mod derivatives;
22pub mod interpolation;
23mod interest;
24pub mod options;
25mod percentage;
26pub mod solver;
27pub mod term_structure;
28mod time_value;
29
30pub use day_count::{Date, DayCountConvention, YearFraction};
31pub use interpolation::{CubicSpline, DataPoint, Interpolator, Linear, LogLinear};
32pub use interest::{compound_interest, effective_annual_rate, simple_interest};
33pub use options::{
34 black_scholes_call, black_scholes_put, call_greeks, implied_volatility, normal_cdf, normal_pdf,
35 put_greeks, Greeks, OptionParams,
36};
37pub use percentage::{basis_points_to_decimal, percentage_change, percentage_of};
38pub use precision_core::{ArithmeticError, Decimal, RoundingMode};
39pub use term_structure::{
40 CurveNode, FlatTermStructure, PiecewiseTermStructure, TermStructure, MAX_CURVE_NODES,
41};
42pub use solver::{
43 bisection, brent, default_tolerance, newton_raphson, newton_raphson_numerical, secant,
44 SolverResult, DEFAULT_MAX_ITER,
45};
46pub use time_value::{future_value, net_present_value, present_value};
47pub use derivatives::{
48 calculate_average_entry_price, calculate_breakeven_price, calculate_effective_leverage,
49 calculate_funding_payment, calculate_funding_rate, calculate_liquidation_distance,
50 calculate_liquidation_price, calculate_margin_ratio, calculate_max_position_size, calculate_pnl,
51 calculate_pnl_percentage, calculate_required_collateral, calculate_roe, FundingParams,
52 PerpPosition,
53};
54pub use amm::{
55 calculate_amounts_from_liquidity, calculate_impermanent_loss, calculate_liquidity_burn,
56 calculate_liquidity_from_amounts, calculate_liquidity_mint, calculate_position_value,
57 calculate_price_impact, calculate_spot_price, calculate_swap_input, calculate_swap_output,
58 sqrt_price_to_tick, tick_spacing_to_fee_bps, tick_to_sqrt_price, ConcentratedPosition,
59 MAX_TICK, MIN_TICK, TICK_SPACING_HIGH, TICK_SPACING_LOW, TICK_SPACING_MEDIUM,
60};