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 capacity;
17pub mod error;
18pub mod limits;
19pub mod math;
20pub mod spend_limits;
21pub mod weights;
22
23pub use balance::{calculate_value_usdc_base_units, compute_token_balance, get_token_balance};
24pub use capacity::{
25    calculate_capacity, calculate_spend_limit_cents, usdc_base_units_to_cents, CapacityResult,
26    PositionInfo,
27};
28pub use error::{MathError, MathResult};
29pub use limits::{calculate_position_limits, MarginState, PositionData, PositionLimits};
30pub use math::CheckedDivCeil;
31pub use spend_limits::get_remaining_timeframe_limit;
32pub use weights::{
33    calculate_asset_weight, calculate_liability_weight, calculate_scaled_initial_asset_weight,
34    calculate_size_discount_asset_weight, calculate_size_premium_liability_weight,
35    get_strict_price, to_amm_precision, AMM_RESERVE_PRECISION, SPOT_IMF_PRECISION,
36    SPOT_WEIGHT_PRECISION,
37};