Skip to main content

pyra_margin/
lib.rs

1#![deny(
2    clippy::unwrap_used,
3    clippy::expect_used,
4    clippy::panic,
5    clippy::arithmetic_side_effects,
6    unused_must_use
7)]
8
9//! Margin weight, balance, and price calculations for Drift spot positions.
10//!
11//! Provides shared math used by api-v2, settlement-service, and notification-service
12//! for computing token balances, USDC values, asset/liability weights with IMF
13//! size adjustments, and conservative oracle prices.
14
15pub mod balance;
16pub mod error;
17pub mod limits;
18pub mod math;
19pub mod weights;
20
21pub use balance::{calculate_value_usdc_base_units, get_token_balance};
22pub use error::{MathError, MathResult};
23pub use limits::{calculate_position_limits, MarginState, PositionData, PositionLimits};
24pub use math::CheckedDivCeil;
25pub use weights::{
26    calculate_asset_weight, calculate_liability_weight, calculate_scaled_initial_asset_weight,
27    calculate_size_discount_asset_weight, calculate_size_premium_liability_weight,
28    get_strict_price, to_amm_precision, AMM_RESERVE_PRECISION, SPOT_IMF_PRECISION,
29    SPOT_WEIGHT_PRECISION,
30};