place_and_cancel/
place_and_cancel.rs1use vertex_sdk::math::to_i128_x18;
2use vertex_sdk::prelude::*;
3use vertex_sdk::utils::private_key::private_key;
4
5#[tokio::main]
6async fn main() {
7 let private_key = private_key();
9
10 let client = VertexClient::new(ClientMode::SepoliaTest)
11 .with_signer(private_key)
12 .await
13 .unwrap();
14
15 const BTC_PERP: u32 = 2;
16
17 let response = client
19 .place_order_builder()
20 .product_id(BTC_PERP)
21 .amount(to_i128_x18(-1))
22 .price_x18(to_i128_x18(35_000))
23 .execute()
24 .await
25 .unwrap();
26
27 let digest = response.unwrap().digest;
28
29 let open_orders = client
31 .get_subaccount_orders(client.subaccount().unwrap(), BTC_PERP)
32 .await
33 .unwrap();
34 println!("open orders: {:?}", open_orders);
35
36 let cancellation_response = client
38 .cancellation_builder()
39 .digests(vec![digest])
40 .product_ids(vec![BTC_PERP])
41 .execute()
42 .await
43 .unwrap();
44
45 let canceled_digest = cancellation_response.unwrap().cancelled_orders[0].digest;
46 assert_eq!(digest, canceled_digest)
47}