pyra-margin 0.3.1

Margin weight, balance, and price calculations for Drift spot positions
Documentation
#![deny(
    clippy::unwrap_used,
    clippy::expect_used,
    clippy::panic,
    clippy::arithmetic_side_effects,
    unused_must_use
)]

//! Margin weight, balance, and price calculations for Drift spot positions.
//!
//! Provides shared math used by api-v2, settlement-service, and notification-service
//! for computing token balances, USDC values, asset/liability weights with IMF
//! size adjustments, and conservative oracle prices.

pub mod balance;
pub mod capacity;
pub mod error;
pub mod limits;
pub mod math;
pub mod spend_limits;
pub mod weights;

pub use balance::{calculate_value_usdc_base_units, compute_token_balance, get_token_balance};
pub use capacity::{
    calculate_capacity, calculate_spend_limit_cents, usdc_base_units_to_cents, CapacityResult,
    PositionInfo,
};
pub use error::{MathError, MathResult};
pub use limits::{calculate_position_limits, MarginState, PositionData, PositionLimits};
pub use math::CheckedDivCeil;
pub use spend_limits::get_remaining_timeframe_limit;
pub use weights::{
    calculate_asset_weight, calculate_liability_weight, calculate_scaled_initial_asset_weight,
    calculate_size_discount_asset_weight, calculate_size_premium_liability_weight,
    get_strict_price, to_amm_precision, AMM_RESERVE_PRECISION, SPOT_IMF_PRECISION,
    SPOT_WEIGHT_PRECISION,
};