From 9627096393732ad18a471e3d6c4bb73a4b99f5f7 Mon Sep 17 00:00:00 2001 From: Will Liu Date: Fri, 19 Jan 2024 13:54:54 -0500 Subject: [PATCH] query subaccounts --- .../contracts/dydx-messages-example/src/contract.rs | 13 ++++++++++++- protocol/contracts/dydx-messages-example/src/msg.rs | 7 ++++++- protocol/dydx-cosmwasm/src/lib.rs | 3 ++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/protocol/contracts/dydx-messages-example/src/contract.rs b/protocol/contracts/dydx-messages-example/src/contract.rs index 157a049fd2..6f7d2284a1 100644 --- a/protocol/contracts/dydx-messages-example/src/contract.rs +++ b/protocol/contracts/dydx-messages-example/src/contract.rs @@ -5,7 +5,7 @@ use cosmwasm_std::{ to_binary, }; use cw2::set_contract_version; -use dydx_cosmwasm::{DydxQuerier, DydxQueryWrapper, MarketPrice, Order, OrderId, DydxMsg, SubaccountId, OrderSide}; +use dydx_cosmwasm::{DydxQuerier, DydxQueryWrapper, MarketPrice, Subaccount, Order, OrderId, DydxMsg, SubaccountId, OrderSide, SubaccountResponse}; use crate::error::ContractError; use crate::msg::{ArbiterResponse, ExecuteMsg, InstantiateMsg, QueryMsg}; @@ -200,6 +200,7 @@ fn place_order(deps: DepsMut, order: Order) -> Result, Contrac pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { match msg { QueryMsg::MarketPrice { id } => to_binary(&query_price(deps, id)?), + QueryMsg::Subaccount { address, subaccountNumber } => to_binary(&query_subaccount(deps, address, subaccountNumber)?), QueryMsg::Arbiter {} => to_binary(&query_arbiter(deps)?), } } @@ -213,6 +214,16 @@ fn query_price( Ok(res?) } +fn query_subaccount( + deps: Deps, + address: String, + subaccountNumber: u32, +) -> StdResult { + let querier = DydxQuerier::new(&deps.querier); + let res = querier.query_subaccount(address, subaccountNumber); + Ok(res?) +} + fn query_arbiter(deps: Deps) -> StdResult { let config = CONFIG.load(deps.storage)?; let addr = config.arbiter; diff --git a/protocol/contracts/dydx-messages-example/src/msg.rs b/protocol/contracts/dydx-messages-example/src/msg.rs index 35df59ab8a..d470900956 100644 --- a/protocol/contracts/dydx-messages-example/src/msg.rs +++ b/protocol/contracts/dydx-messages-example/src/msg.rs @@ -1,7 +1,7 @@ use cosmwasm_schema::{cw_serde, QueryResponses}; use cosmwasm_std::{Addr, Coin}; use cw_utils::Expiration; -use dydx_cosmwasm::{OrderConditionType, OrderSide, OrderTimeInForce, SubaccountId, MarketPrice}; +use dydx_cosmwasm::{OrderConditionType, OrderSide, OrderTimeInForce, SubaccountId, MarketPrice, Subaccount}; #[cw_serde] pub struct InstantiateMsg { @@ -51,6 +51,11 @@ pub enum QueryMsg { #[returns(MarketPrice)] MarketPrice { id: u32, + }, + #[returns(SubaccountResponse)] + Subaccount { + address: String, + subaccountNumber: u32, } } diff --git a/protocol/dydx-cosmwasm/src/lib.rs b/protocol/dydx-cosmwasm/src/lib.rs index 939beacb01..0ecaa64619 100644 --- a/protocol/dydx-cosmwasm/src/lib.rs +++ b/protocol/dydx-cosmwasm/src/lib.rs @@ -9,10 +9,11 @@ mod response_helper; pub use msg::{DydxMsg, SubaccountId, Transfer, Order, OrderSide, OrderTimeInForce, OrderConditionType, OrderId}; pub use querier::DydxQuerier; pub use query::{ - DydxQuery, DydxQueryWrapper, + DydxQuery, DydxQueryWrapper, SubaccountResponse, }; // TODO: Export MarketPriceResponse instead for style consistency. pub use proto_structs::MarketPrice; +pub use proto_structs::Subaccount; pub use route::DydxRoute; // This export is added to all contracts that import this package, signifying that they require