Struct mango_v4_client::MangoGroupContext
source · pub struct MangoGroupContext {
pub group: Pubkey,
pub tokens: HashMap<TokenIndex, TokenContext>,
pub token_indexes_by_name: HashMap<String, TokenIndex>,
pub serum3_markets: HashMap<Serum3MarketIndex, Serum3MarketContext>,
pub serum3_market_indexes_by_name: HashMap<String, Serum3MarketIndex>,
pub openbook_v2_markets: HashMap<OpenbookV2MarketIndex, OpenbookV2MarketContext>,
pub openbook_v2_market_indexes_by_name: HashMap<String, OpenbookV2MarketIndex>,
pub perp_markets: HashMap<PerpMarketIndex, PerpMarketContext>,
pub perp_market_indexes_by_name: HashMap<String, PerpMarketIndex>,
pub address_lookup_tables: Vec<Pubkey>,
pub compute_estimates: ComputeEstimates,
}
Fields§
§group: Pubkey
§tokens: HashMap<TokenIndex, TokenContext>
§token_indexes_by_name: HashMap<String, TokenIndex>
§serum3_markets: HashMap<Serum3MarketIndex, Serum3MarketContext>
§serum3_market_indexes_by_name: HashMap<String, Serum3MarketIndex>
§openbook_v2_markets: HashMap<OpenbookV2MarketIndex, OpenbookV2MarketContext>
§openbook_v2_market_indexes_by_name: HashMap<String, OpenbookV2MarketIndex>
§perp_markets: HashMap<PerpMarketIndex, PerpMarketContext>
§perp_market_indexes_by_name: HashMap<String, PerpMarketIndex>
§address_lookup_tables: Vec<Pubkey>
§compute_estimates: ComputeEstimates
Implementations§
source§impl MangoGroupContext
impl MangoGroupContext
pub fn mint_info_address(&self, token_index: TokenIndex) -> Pubkey
pub fn perp(&self, perp_market_index: PerpMarketIndex) -> &PerpMarketContext
pub fn perp_market_address(&self, perp_market_index: PerpMarketIndex) -> Pubkey
pub fn serum3_market_index(&self, name: &str) -> Serum3MarketIndex
pub fn serum3(&self, market_index: Serum3MarketIndex) -> &Serum3MarketContext
pub fn serum3_base_token( &self, market_index: Serum3MarketIndex ) -> &TokenContext
pub fn serum3_quote_token( &self, market_index: Serum3MarketIndex ) -> &TokenContext
pub fn openbook_v2( &self, market_index: OpenbookV2MarketIndex ) -> &OpenbookV2MarketContext
pub fn token(&self, token_index: TokenIndex) -> &TokenContext
pub fn token_by_mint(&self, mint: &Pubkey) -> Result<&TokenContext>
pub fn token_by_name(&self, name: &str) -> &TokenContext
pub async fn new_from_rpc(rpc: &RpcClientAsync, group: Pubkey) -> Result<Self>
pub fn derive_health_check_remaining_account_metas( &self, account: &MangoAccountValue, affected_tokens: Vec<TokenIndex>, writable_banks: Vec<TokenIndex>, affected_perp_markets: Vec<PerpMarketIndex>, fallback_contexts: HashMap<Pubkey, FallbackOracleContext> ) -> Result<(Vec<AccountMeta>, u32)>
pub fn derive_health_check_remaining_account_metas_two_accounts( &self, account1: &MangoAccountValue, account2: &MangoAccountValue, affected_tokens: &[TokenIndex], writable_banks: &[TokenIndex], fallback_contexts: HashMap<Pubkey, FallbackOracleContext> ) -> Result<(Vec<AccountMeta>, u32)>
sourcepub fn changed_significantly(&self, other: &Self) -> bool
pub fn changed_significantly(&self, other: &Self) -> bool
Returns true if the on-chain context changed significantly, this currently means:
- new listings (token, serum, perp)
- oracle pubkey or config changes
- other config changes visible through the context This is done because those would affect the pubkeys the websocket streams need to listen to, or change limits, oracle staleness or other relevant configuration.
pub async fn new_tokens_listed(&self, rpc: &RpcClientAsync) -> Result<bool>
pub async fn new_serum3_markets_listed( &self, rpc: &RpcClientAsync ) -> Result<bool>
pub async fn new_perp_markets_listed( &self, rpc: &RpcClientAsync ) -> Result<bool>
sourcepub async fn derive_fallback_oracle_keys(
&self,
fallback_oracle_config: &FallbackOracleConfig,
account_fetcher: &dyn AccountFetcher
) -> Result<HashMap<Pubkey, FallbackOracleContext>>
pub async fn derive_fallback_oracle_keys( &self, fallback_oracle_config: &FallbackOracleConfig, account_fetcher: &dyn AccountFetcher ) -> Result<HashMap<Pubkey, FallbackOracleContext>>
Returns a map of oracle pubkey -> FallbackOracleContext
Auto Trait Implementations§
impl RefUnwindSafe for MangoGroupContext
impl Send for MangoGroupContext
impl Sync for MangoGroupContext
impl Unpin for MangoGroupContext
impl UnwindSafe for MangoGroupContext
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere T: 'a,
§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> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where T: CheckedCast<Dst>,
Casts the value.
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Casts the value.
source§impl<T> DerefOrBorrow<T> for Twhere
T: ?Sized,
impl<T> DerefOrBorrow<T> for Twhere T: ?Sized,
fn deref_or_borrow(&self) -> &T
source§impl<T> DerefOrBorrowMut<T> for Twhere
T: ?Sized,
impl<T> DerefOrBorrowMut<T> for Twhere T: ?Sized,
fn deref_or_borrow_mut(&mut self) -> &mut T
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T
in a tonic::Request
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T
in a tonic::Request
source§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere Dst: LosslessTryFrom<Src>,
source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
Performs the conversion.
source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere Dst: LossyFrom<Src>,
source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
Performs the conversion.
source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where T: OverflowingCast<Dst>,
Casts the value.
source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere Src: OverflowingCast<Dst>,
source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
Casts the value.
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere T: SaturatingCast<Dst>,
Casts the value.
source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere Src: SaturatingCast<Dst>,
source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
Casts the value.
§impl<T> TupleTree<T, ()> for T
impl<T> TupleTree<T, ()> for T
const SIZE: Size = Size{ degree: 0, descendants: 0,}
fn descendants(_indirect_level: usize) -> usize
fn height() -> usize
fn preorder(self, f: &mut impl FnMut(Visit<T>))
fn preorder_with_size_hint(self, f: &mut impl FnMut(Visit<T>, Size))
fn postorder(self, f: &mut impl FnMut(Visit<T>))
fn postorder_with_size_hint(self, f: &mut impl FnMut(Visit<T>, Size))
source§impl<T> UnwrappedAs for T
impl<T> UnwrappedAs for T
source§fn unwrapped_as<Dst>(self) -> Dstwhere
T: UnwrappedCast<Dst>,
fn unwrapped_as<Dst>(self) -> Dstwhere T: UnwrappedCast<Dst>,
Casts the value.
source§impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
Src: UnwrappedCast<Dst>,
impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere Src: UnwrappedCast<Dst>,
source§fn unwrapped_cast_from(src: Src) -> Dst
fn unwrapped_cast_from(src: Src) -> Dst
Casts the value.
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
source§impl<T> WrappingAs for T
impl<T> WrappingAs for T
source§fn wrapping_as<Dst>(self) -> Dstwhere
T: WrappingCast<Dst>,
fn wrapping_as<Dst>(self) -> Dstwhere T: WrappingCast<Dst>,
Casts the value.
source§impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
Src: WrappingCast<Dst>,
impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere Src: WrappingCast<Dst>,
source§fn wrapping_cast_from(src: Src) -> Dst
fn wrapping_cast_from(src: Src) -> Dst
Casts the value.