amm/depeg/
marinade.rs

1use crate::constants::depeg;
2use anchor_lang::prelude::*;
3use marinade_sdk::state::State;
4use std::convert::TryInto;
5
6pub fn get_virtual_price(bytes: &[u8]) -> Option<u64> {
7    let stake_state = State::deserialize(&mut &bytes[8..]).ok()?;
8
9    let virtual_price = (stake_state.msol_price as u128)
10        .checked_mul(depeg::PRECISION as u128)?
11        .checked_div(State::PRICE_DENOMINATOR as u128)?;
12
13    virtual_price.try_into().ok()
14}
15
16pub mod stake {
17    use super::*;
18    declare_id!("8szGkuLTAux9XMgZ2vtY39jVSowEcpBfFfD8hXSEqdGC");
19}