Skip to main content

VaultInfo

Struct VaultInfo 

Source
pub struct VaultInfo {
    pub address: Pubkey,
    pub token_mint: Pubkey,
    pub token_program: Pubkey,
    /* private fields */
}
Expand description

On-chain vault data that cannot be derived from PDAs.

The caller reads these fields from the deserialized VaultState account. Vault PDAs (authority, token vault, shares mint) and remaining accounts are derived automatically by the helpers.

§Reserve slot-ordering contract

reserves mirrors the on-chain non-empty vault_allocation_strategy[] slots in slot order. The on-chain refresh check (check_allocation_reserves_refreshed) walks the refresh remaining accounts in exactly that order, so the order must be preserved. The constructors enforce this by re-deriving the order from the allocation strategy regardless of the order in which reserve data is supplied, so the refresh check cannot be violated through this type.

Fields§

§address: Pubkey

Vault account address.

§token_mint: Pubkey

SPL token mint for the vault’s underlying asset (e.g. USDC).

§token_program: Pubkey

Token program for token_mint (TOKEN_PROGRAM_ID or Token-2022).

Implementations§

Source§

impl VaultInfo

Source

pub fn active_reserve_addresses(vault: &VaultState) -> Vec<Pubkey>

Addresses of the reserves with active allocations, in vault_allocation_strategy[] slot order.

Use this to learn which reserve accounts to fetch before building a VaultInfo (the lending markets needed by the constructors live on those reserve accounts).

Source

pub fn from_vault_state( address: Pubkey, vault: &VaultState, reserves: &[ReserveInfo], ) -> Result<Self, VaultInfoError>

Build from a deserialized VaultState and the fetched reserve data.

The reserve+lending-market list is built by iterating the active allocations in slot order and looking up the matching ReserveInfo by address, so the order of reserves does not matter. Returns VaultInfoError::MissingReserve if any active allocation reserve has no matching ReserveInfo.

Source

pub fn from_account_data( address: Pubkey, data: &[u8], reserves: &[ReserveInfo], ) -> Result<Self, VaultInfoError>

Build from raw account bytes (includes 8-byte discriminator) and the fetched reserve data.

See from_vault_state for the slot-ordering contract and the reserves lookup semantics.

Source

pub fn reserves(&self) -> &[VaultReserve]

Active allocations (reserve + lending market) in vault_allocation_strategy[] slot order.

The order mirrors the on-chain non-empty allocation slots and is enforced by the constructors (see the type-level docs), so it is safe to use directly to build the refresh remaining accounts.

Source

pub fn reserve_addresses(&self) -> impl Iterator<Item = Pubkey> + '_

Addresses of the reserves with active allocations, in slot order.

Convenience iterator for read-only consumers that only need the reserve pubkeys.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Az for T

Source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

Source§

fn cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> CheckedAs for T

Source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

Source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<Src, Dst> LosslessTryInto<Dst> for Src
where Dst: LosslessTryFrom<Src>,

Source§

fn lossless_try_into(self) -> Option<Dst>

Performs the conversion.
Source§

impl<Src, Dst> LossyInto<Dst> for Src
where Dst: LossyFrom<Src>,

Source§

fn lossy_into(self) -> Dst

Performs the conversion.
Source§

impl<T> OverflowingAs for T

Source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

Source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> SaturatingAs for T

Source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

Source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> UnwrappedAs for T

Source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

Source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> WrappingAs for T

Source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

Source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.