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