Skip to main content

pyra_margin/
lib.rs

1//! Margin weight, balance, and price calculations for spot positions.
2//!
3//! Protocol-specific logic lives in submodules (`drift`, `kamino`); shared
4//! math and error types are at the crate root.
5
6pub mod common;
7pub mod drift;
8pub mod error;
9pub mod kamino;
10pub mod math;
11pub mod spend_limits;
12
13// ─── Re-exports for backwards compatibility ─────────────────────
14
15pub use drift::balance::{
16    calculate_value_usdc_base_units, compute_token_balance, get_token_balance,
17};
18pub use common::{calculate_spend_limit_cents, usdc_base_units_to_cents, USDC_BASE_UNITS_PER_CENT};
19pub use drift::capacity::{calculate_capacity, CapacityResult, PositionInfo};
20pub use drift::limits::{calculate_position_limits, MarginState, PositionData, PositionLimits};
21pub use drift::weights::{
22    calculate_asset_weight, calculate_liability_weight, calculate_scaled_initial_asset_weight,
23    calculate_size_discount_asset_weight, calculate_size_premium_liability_weight,
24    get_strict_price, to_amm_precision, AMM_RESERVE_PRECISION, SPOT_IMF_PRECISION,
25    SPOT_WEIGHT_PRECISION,
26};
27pub use error::{MathError, MathResult};
28pub use kamino::balance::{get_kamino_borrow_balance, get_kamino_deposit_balance};
29pub use kamino::capacity::{
30    calculate_kamino_capacity, KaminoCapacityResult, KaminoPositionInfo, KaminoPositionType,
31};
32pub use kamino::limits::{
33    calculate_kamino_position_limits, KaminoMarginState, KaminoPositionLimits,
34};
35pub use kamino::weights::{get_kamino_asset_weight, get_kamino_liability_weight, get_kamino_price};
36pub use math::CheckedDivCeil;
37pub use spend_limits::get_remaining_timeframe_limit;