Struct levana_perpswap_cosmos_msg::prelude::PricePoint
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§
§impl PricePoint
impl PricePoint
pub fn base_to_collateral(&self, base: Base) -> Collateral
pub fn base_to_collateral(&self, base: Base) -> Collateral
Convert a base value into collateral.
pub fn base_to_usd(&self, base: Base) -> Usd
pub fn base_to_usd(&self, base: Base) -> Usd
Convert a base value into USD.
pub 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.
pub fn collateral_to_usd(&self, collateral: Collateral) -> Usd
pub fn collateral_to_usd(&self, collateral: Collateral) -> Usd
Convert a collateral value into USD.
pub fn usd_to_collateral(&self, usd: Usd) -> Collateral
pub fn usd_to_collateral(&self, usd: Usd) -> Collateral
Convert a USD value into collateral.
pub 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
pub fn notional_to_usd(&self, notional: Notional) -> Usd
pub fn notional_to_usd(&self, notional: Notional) -> Usd
Convert a notional value into USD.
pub 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
pub 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
pub 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§
§impl Clone for PricePoint
impl Clone for PricePoint
§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 more§impl Debug for PricePoint
impl Debug for PricePoint
§impl<'de> Deserialize<'de> for PricePoint
impl<'de> Deserialize<'de> for PricePoint
§fn deserialize<__D>(
__deserializer: __D
) -> Result<PricePoint, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>( __deserializer: __D ) -> Result<PricePoint, <__D as Deserializer<'de>>::Error>where __D: Deserializer<'de>,
§impl JsonSchema for PricePoint
impl JsonSchema for PricePoint
§fn schema_name() -> String
fn schema_name() -> String
§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
§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 more§impl PartialEq for PricePoint
impl PartialEq for PricePoint
§fn eq(&self, other: &PricePoint) -> bool
fn eq(&self, other: &PricePoint) -> bool
self
and other
values to be equal, and is used
by ==
.§impl Serialize for PricePoint
impl Serialize for PricePoint
§fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>( &self, __serializer: __S ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where __S: Serializer,
impl Copy for PricePoint
impl Eq for PricePoint
impl StructuralEq for PricePoint
impl StructuralPartialEq for PricePoint
Auto Trait Implementations§
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 more