pub struct MeteoraAmmPool {Show 14 fields
pub info: Pool,
pub enabled: bool,
pub token_a_vault: Arc<RwLock<MeteoraVault>>,
pub token_b_vault: Arc<RwLock<MeteoraVault>>,
pub token_a_fee_address: Pubkey,
pub token_b_fee_address: Pubkey,
pub token_a_lp_vault_address: Pubkey,
pub token_b_lp_vault_address: Pubkey,
pub token_a_lp_amount: u128,
pub token_b_lp_amount: u128,
pub trade_fee_numerator: u128,
pub trade_fee_denominator: u128,
pub protocol_trade_fee_numerator: u128,
pub protocol_trade_fee_denominator: u128,
}Expand description
Struct to hold data and PoolTrait implementation for Meteora Ammv1 pools. This struct contains the data that is UNIQUE to a specific AMM Pool on Meteora. For shared data, such as vaults for tokens, because they are shared across all AMM pools in the Meteora protocol, they will be stored in shared MeteoraVault objects. References to those shared objects will be stored in these pool info objects.
Fields§
§info: Pool§enabled: bool§token_a_vault: Arc<RwLock<MeteoraVault>>§token_b_vault: Arc<RwLock<MeteoraVault>>§token_a_fee_address: Pubkey§token_b_fee_address: Pubkey§token_a_lp_vault_address: Pubkey§token_b_lp_vault_address: Pubkey§token_a_lp_amount: u128§token_b_lp_amount: u128§trade_fee_numerator: u128§trade_fee_denominator: u128§protocol_trade_fee_numerator: u128§protocol_trade_fee_denominator: u128Implementations§
Source§impl MeteoraAmmPool
impl MeteoraAmmPool
Sourcepub fn from_account_info(
pubkey: Pubkey,
account_buffer: &Vec<u8>,
central_context: Arc<CentralContext>,
) -> Self
pub fn from_account_info( pubkey: Pubkey, account_buffer: &Vec<u8>, central_context: Arc<CentralContext>, ) -> Self
Create a Meteora AMM pool from on-chain account data
Parses the account buffer using the Meteora AMM pool IDL structure and creates vault references for both tokens. The vaults are looked up or created via the central context cache.
Trait Implementations§
Source§impl PoolTrait for MeteoraAmmPool
impl PoolTrait for MeteoraAmmPool
Source§fn token_a_amount_units(&self) -> u64
fn token_a_amount_units(&self) -> u64
Get the actual amount of token A in the pool, in token units. This is calculated dynamically
because some protocols (like Meteora) derive real token balances from LP token balances
rather than storing them directly in the pool account, and other protocols require excluding
collected fees from raw reserves.
Source§fn token_b_amount_units(&self) -> u64
fn token_b_amount_units(&self) -> u64
Get the actual amount of token B in the pool, in token units. See
token_a_amount_units
for details on why this is calculated dynamically.Source§fn pool_address(&self) -> &Pubkey
fn pool_address(&self) -> &Pubkey
Get the pool’s on-chain address
Source§fn token_a_address(&self) -> &Pubkey
fn token_a_address(&self) -> &Pubkey
Get the address of token A
Source§fn token_b_address(&self) -> &Pubkey
fn token_b_address(&self) -> &Pubkey
Get the address of token B
Source§fn token_a_vault_address(&self) -> &Pubkey
fn token_a_vault_address(&self) -> &Pubkey
Get the vault address for token A
Source§fn token_b_vault_address(&self) -> &Pubkey
fn token_b_vault_address(&self) -> &Pubkey
Get the vault address for token B
Source§fn total_swap_fee_lp(&self, _: &Arc<CentralContext>) -> u64
fn total_swap_fee_lp(&self, _: &Arc<CentralContext>) -> u64
Get the total swap fee in lamports (10^9 lamports = 1 SOL)
Source§fn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
Get a mutable reference to the pool as
Any for type downcastingSource§fn price_a_over_b_lp(&self) -> u128
fn price_a_over_b_lp(&self) -> u128
Calculate the price of token A in terms of token B. Fx ticker equivalent: B/A. Returns how
many units of token A are needed to buy 1 unit of token B, in lamports. For AMMs, typically
calculated as: (A reserves * LAMPORTS_PER_SOL) / B reserves
Source§fn price_b_over_a_lp(&self) -> u128
fn price_b_over_a_lp(&self) -> u128
Calculate the price of token B in terms of token A. Fx ticker equivalent: A/B. Returns how
many units of token A are needed to buy 1 unit of token B, in lamports. For AMMs, typically
calculated as: (B reserves * LAMPORTS_PER_SOL) / A reserves. Inverse of
price_a_over_b_lp.Source§fn fetch_market_state_from_rpc(&mut self, context: &Arc<CentralContext>)
fn fetch_market_state_from_rpc(&mut self, context: &Arc<CentralContext>)
Fetch and update pool state from JSON RPC and immediately overrides the in-memory pool state.
Should not be used in production in favor of using gRPC streams.
Source§fn directional_fees(
&self,
swap_direction: SwapDirection,
_: &Arc<CentralContext>,
) -> (f64, f64)
fn directional_fees( &self, swap_direction: SwapDirection, _: &Arc<CentralContext>, ) -> (f64, f64)
Get directional swap fees as fractions for a given swap direction Read more
Auto Trait Implementations§
impl Freeze for MeteoraAmmPool
impl RefUnwindSafe for MeteoraAmmPool
impl Send for MeteoraAmmPool
impl Sync for MeteoraAmmPool
impl Unpin for MeteoraAmmPool
impl UnwindSafe for MeteoraAmmPool
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more