From c24128365f83917de435f9e55dfb765443e575ff Mon Sep 17 00:00:00 2001 From: Sairam kola Date: Thu, 20 Jun 2024 16:09:50 +0530 Subject: [PATCH 1/4] add perpetual asset contexts --- src/bin/info.rs | 8 ++++++++ src/info/info_client.rs | 11 ++++++++++- src/info/response_structs.rs | 15 ++++++++++++++- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/bin/info.rs b/src/bin/info.rs index 873c7d0..dfb574a 100644 --- a/src/bin/info.rs +++ b/src/bin/info.rs @@ -12,6 +12,7 @@ async fn main() { user_states_example(&info_client).await; recent_trades(&info_client).await; meta_example(&info_client).await; + meta_and_asset_contexts_example(&info_client).await; all_mids_example(&info_client).await; user_fills_example(&info_client).await; funding_history_example(&info_client).await; @@ -68,6 +69,13 @@ async fn meta_example(info_client: &InfoClient) { info!("Metadata: {:?}", info_client.meta().await.unwrap()); } +async fn meta_and_asset_contexts_example(info_client: &InfoClient) { + info!( + "MetaAndAssetContexts: {:?}", + info_client.meta_and_asset_contexts().await.unwrap() + ); +} + async fn all_mids_example(info_client: &InfoClient) { info!("All mids: {:?}", info_client.all_mids().await.unwrap()); } diff --git a/src/info/info_client.rs b/src/info/info_client.rs index 7d9313c..3106235 100644 --- a/src/info/info_client.rs +++ b/src/info/info_client.rs @@ -1,7 +1,7 @@ use crate::{ info::{ CandlesSnapshotResponse, FundingHistoryResponse, L2SnapshotResponse, OpenOrdersResponse, - RecentTradesResponse, UserFillsResponse, UserStateResponse, + RecentTradesResponse, UserFillsResponse, UserStateResponse, MetaAndAssetContexts }, meta::{Meta, SpotMeta}, prelude::*, @@ -41,6 +41,7 @@ pub enum InfoRequest { user: H160, }, Meta, + MetaAndAssetCtxs, SpotMeta, AllMids, UserFills { @@ -147,6 +148,14 @@ impl InfoClient { serde_json::from_str(&return_data).map_err(|e| Error::JsonParse(e.to_string())) } + pub async fn meta_and_asset_contexts(&self) -> Result> { + let input = InfoRequest::MetaAndAssetCtxs; + let data = serde_json::to_string(&input).map_err(|e| Error::JsonParse(e.to_string()))?; + + let return_data = self.http_client.post("/info", data).await?; + serde_json::from_str(&return_data).map_err(|e| Error::JsonParse(e.to_string())) + } + pub async fn spot_meta(&self) -> Result { let input = InfoRequest::SpotMeta; let data = serde_json::to_string(&input).map_err(|e| Error::JsonParse(e.to_string()))?; diff --git a/src/info/response_structs.rs b/src/info/response_structs.rs index dff1715..b9d845b 100644 --- a/src/info/response_structs.rs +++ b/src/info/response_structs.rs @@ -1,4 +1,4 @@ -use crate::info::{AssetPosition, Level, MarginSummary}; +use crate::{info::{AssetPosition, Level, MarginSummary},meta::Meta}; use serde::Deserialize; #[derive(Deserialize, Debug)] @@ -88,3 +88,16 @@ pub struct CandlesSnapshotResponse { #[serde(rename = "n")] pub num_trades: u64, } + +#[derive(Deserialize, Debug, Clone)] +#[serde(untagged)] +pub enum MetaAndAssetContexts { + Meta(Meta), + Context(Vec), +} +#[derive(Deserialize, Debug, Clone)] +#[serde(rename_all = "camelCase")] +pub struct AssetContext { + pub mark_px: String, + pub oracle_px: String, +} From 8f57ba83f4f59c34963be442fa4aa455c6c84cd3 Mon Sep 17 00:00:00 2001 From: Sairam kola Date: Thu, 20 Jun 2024 17:06:27 +0530 Subject: [PATCH 2/4] update structs --- src/info/response_structs.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/info/response_structs.rs b/src/info/response_structs.rs index b9d845b..3edca10 100644 --- a/src/info/response_structs.rs +++ b/src/info/response_structs.rs @@ -98,6 +98,10 @@ pub enum MetaAndAssetContexts { #[derive(Deserialize, Debug, Clone)] #[serde(rename_all = "camelCase")] pub struct AssetContext { + pub day_ntl_vlm: String, + pub funding: String, pub mark_px: String, + pub open_interest: String, pub oracle_px: String, + pub prev_day_px: String, } From 4f5d1735af035daea254baca1a9f65baecc32796 Mon Sep 17 00:00:00 2001 From: Sairam kola Date: Fri, 21 Jun 2024 11:36:57 +0530 Subject: [PATCH 3/4] fix formatting --- src/info/response_structs.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/info/response_structs.rs b/src/info/response_structs.rs index 3edca10..6dd0236 100644 --- a/src/info/response_structs.rs +++ b/src/info/response_structs.rs @@ -1,4 +1,4 @@ -use crate::{info::{AssetPosition, Level, MarginSummary},meta::Meta}; +use crate::{info::{AssetPosition, Level, MarginSummary}, meta::Meta}; use serde::Deserialize; #[derive(Deserialize, Debug)] From d965c9f490017c58ce22946abc4f40decda0cb7b Mon Sep 17 00:00:00 2001 From: Sairam kola Date: Fri, 21 Jun 2024 12:01:52 +0530 Subject: [PATCH 4/4] update struct --- src/info/response_structs.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/info/response_structs.rs b/src/info/response_structs.rs index 6dd0236..d0e54f0 100644 --- a/src/info/response_structs.rs +++ b/src/info/response_structs.rs @@ -100,8 +100,11 @@ pub enum MetaAndAssetContexts { pub struct AssetContext { pub day_ntl_vlm: String, pub funding: String, + pub impact_pxs: Option>, pub mark_px: String, + pub mid_px: Option, pub open_interest: String, pub oracle_px: String, + pub premium: Option, pub prev_day_px: String, }