Struct levana_perpswap_cosmos::price::PricePoint
source · pub struct PricePoint {
pub price_notional: Price,
pub price_usd: PriceCollateralInUsd,
pub price_base: PriceBaseInQuote,
pub timestamp: Timestamp,
pub is_notional_usd: bool,
pub market_type: MarketType,
pub publish_time: Option<Timestamp>,
pub publish_time_usd: Option<Timestamp>,
}
Expand description
All prices in the protocol for a given point in time.
This includes extra information necessary for performing all conversions, such as the MarketType.
Fields§
§price_notional: Price
Price as used internally by the protocol, in terms of collateral and notional.
This is generally less useful for external consumers, where PricePoint::price_usd and PricePoint::price_base are used.
price_usd: PriceCollateralInUsd
Price of the collateral asset in terms of USD.
This is generally used for reporting of values like PnL and trade volume.
price_base: PriceBaseInQuote
Price of the base asset in terms of the quote.
timestamp: Timestamp
Publish time of this price point.
Before deferred execution, this was the block time when the field was added. Since deferred execution, this is a calculated value based on the publish times of individual feeds.
is_notional_usd: bool
Is the notional asset USD?
Used for avoiding lossy conversions to USD when they aren’t needed.
We do not need to track if the collateral asset is USD, since USD can never be used as collateral directly. Instead, stablecoins would be used, in which case an explicit price to USD is always needed.
market_type: MarketType
Indicates if this market uses collateral as base or quote, needed for price conversions.
publish_time: Option<Timestamp>
Latest price publish time for the feeds composing the price, if available
This field will always be empty since implementation of deferred execution.
publish_time_usd: Option<Timestamp>
Latest price publish time for the feeds composing the price_usd, if available
This field will always be empty since implementation of deferred execution.
Implementations§
source§impl PricePoint
impl PricePoint
sourcepub fn base_to_collateral(&self, base: Base) -> Collateral
pub fn base_to_collateral(&self, base: Base) -> Collateral
Convert a base value into collateral.
sourcepub fn base_to_usd(&self, base: Base) -> Usd
pub fn base_to_usd(&self, base: Base) -> Usd
Convert a base value into USD.
sourcepub fn collateral_to_base_non_zero(
&self,
collateral: NonZero<Collateral>,
) -> NonZero<Base>
pub fn collateral_to_base_non_zero( &self, collateral: NonZero<Collateral>, ) -> NonZero<Base>
Convert a non-zero collateral value into base.
sourcepub fn collateral_to_usd(&self, collateral: Collateral) -> Usd
pub fn collateral_to_usd(&self, collateral: Collateral) -> Usd
Convert a collateral value into USD.
sourcepub fn usd_to_collateral(&self, usd: Usd) -> Collateral
pub fn usd_to_collateral(&self, usd: Usd) -> Collateral
Convert a USD value into collateral.
sourcepub fn collateral_to_usd_non_zero(
&self,
collateral: NonZero<Collateral>,
) -> NonZero<Usd>
pub fn collateral_to_usd_non_zero( &self, collateral: NonZero<Collateral>, ) -> NonZero<Usd>
Keeps the invariant of a non-zero value
sourcepub fn notional_to_usd(&self, notional: Notional) -> Usd
pub fn notional_to_usd(&self, notional: Notional) -> Usd
Convert a notional value into USD.
sourcepub fn notional_to_collateral(&self, amount: Notional) -> Collateral
pub fn notional_to_collateral(&self, amount: Notional) -> Collateral
Convert an amount in notional into an amount in collateral
sourcepub fn collateral_to_notional(&self, amount: Collateral) -> Notional
pub fn collateral_to_notional(&self, amount: Collateral) -> Notional
Convert an amount in collateral into an amount in notional
sourcepub fn collateral_to_notional_non_zero(
&self,
amount: NonZero<Collateral>,
) -> NonZero<Notional>
pub fn collateral_to_notional_non_zero( &self, amount: NonZero<Collateral>, ) -> NonZero<Notional>
Convert a non-zero amount in collateral into a non-zero amount in notional
Trait Implementations§
source§impl Clone for PricePoint
impl Clone for PricePoint
source§fn clone(&self) -> PricePoint
fn clone(&self) -> PricePoint
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for PricePoint
impl Debug for PricePoint
source§impl<'de> Deserialize<'de> for PricePoint
impl<'de> Deserialize<'de> for PricePoint
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
source§impl JsonSchema for PricePoint
impl JsonSchema for PricePoint
source§fn schema_name() -> String
fn schema_name() -> String
source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
source§fn json_schema(gen: &mut SchemaGenerator) -> Schema
fn json_schema(gen: &mut SchemaGenerator) -> Schema
§fn is_referenceable() -> bool
fn is_referenceable() -> bool
$ref
keyword. Read moresource§impl PartialEq for PricePoint
impl PartialEq for PricePoint
source§fn eq(&self, other: &PricePoint) -> bool
fn eq(&self, other: &PricePoint) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl Serialize for PricePoint
impl Serialize for PricePoint
impl Copy for PricePoint
impl Eq for PricePoint
impl StructuralPartialEq for PricePoint
Auto Trait Implementations§
impl Freeze for PricePoint
impl RefUnwindSafe for PricePoint
impl Send for PricePoint
impl Sync for PricePoint
impl Unpin for PricePoint
impl UnwindSafe for PricePoint
Blanket Implementations§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
self
to type T
. The semantics of numeric casting with the as
operator are followed, so <T as As>::as_::<U>
can be used in the same way as T as U
for numeric conversions. Read moresource§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
source§impl<T> CloneToUninit for Twhere
T: Copy,
impl<T> CloneToUninit for Twhere
T: Copy,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
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>
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>
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