Skip to content

Commit

Permalink
feat: implement cancel_all_and_place_orders client func (#272)
Browse files Browse the repository at this point in the history
  • Loading branch information
wiseaidev committed Jun 17, 2024
1 parent f273b2c commit cfbf82d
Showing 1 changed file with 48 additions and 1 deletion.
49 changes: 48 additions & 1 deletion lib/client/src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use itertools::Itertools;
use openbook_v2::state::OracleConfigParams;
use openbook_v2::{
state::{Market, OpenOrdersAccount, PlaceOrderType, SelfTradeBehavior, Side},
PlaceOrderArgs, PlaceOrderPeggedArgs,
PlaceMultipleOrdersArgs, PlaceOrderArgs, PlaceOrderPeggedArgs,
};

use solana_client::nonblocking::rpc_client::RpcClient as RpcClientAsync;
Expand Down Expand Up @@ -546,6 +546,53 @@ impl OpenBookClient {
self.send_and_confirm_owner_tx(vec![ix]).await
}

#[allow(clippy::too_many_arguments)]
pub async fn cancel_all_and_place_orders(
&self,
market: Market,
market_address: Pubkey,
user_base_account: Pubkey,
user_quote_account: Pubkey,
orders_type: PlaceOrderType,
bids: Vec<PlaceMultipleOrdersArgs>,
asks: Vec<PlaceMultipleOrdersArgs>,
limit: u8,
) -> anyhow::Result<Signature> {
let ix = Instruction {
program_id: openbook_v2::id(),
accounts: {
anchor_lang::ToAccountMetas::to_account_metas(
&openbook_v2::accounts::CancelAllAndPlaceOrders {
open_orders_account: self.open_orders_account,
signer: self.owner(),
open_orders_admin: market.open_orders_admin.into(),
user_quote_account: user_quote_account,
user_base_account: user_base_account,
market: market_address,
bids: market.bids,
asks: market.asks,
event_heap: market.event_heap,
market_quote_vault: market.market_quote_vault,
market_base_vault: market.market_base_vault,
oracle_a: market.oracle_a.into(),
oracle_b: market.oracle_b.into(),
token_program: Token::id(),
},
None,
)
},
data: anchor_lang::InstructionData::data(
&openbook_v2::instruction::CancelAllAndPlaceOrders {
orders_type,
bids,
asks,
limit,
},
),
};
self.send_and_confirm_owner_tx(vec![ix]).await
}

#[allow(clippy::too_many_arguments)]
pub async fn deposit(
&self,
Expand Down

0 comments on commit cfbf82d

Please sign in to comment.