leverage/
leverage.rs

1use std::sync::Arc;
2
3use ethers::signers::{LocalWallet, Signer};
4use hyperliquid::{types::Chain, Exchange, Hyperliquid, Info};
5
6#[tokio::main]
7async fn main() {
8    // Key was randomly generated for testing and shouldn't be used with any real funds
9    let wallet: Arc<LocalWallet> = Arc::new(
10        "e908f86dbb4d55ac876378565aafeabc187f6690f046459397b17d9b9a19688e"
11            .parse()
12            .unwrap(),
13    );
14
15    let exchange: Exchange = Hyperliquid::new(Chain::Dev);
16
17    let leverage = 2;
18    let asset = 4;
19    let is_cross = false;
20
21    println!("Updating leverage to {}x ...", leverage);
22
23    let res = exchange
24        .update_leverage(wallet.clone(), leverage, asset, is_cross)
25        .await
26        .unwrap();
27
28    println!("Response: {:?}", res);
29
30    let margin = 1;
31
32    println!("--\nUpdating isolated margin for ETH to {margin}% ...");
33
34    let res = exchange
35        .update_isolated_margin(wallet.clone(), asset, true, margin)
36        .await
37        .unwrap();
38
39    println!("Response: {:?}", res);
40
41    let info: Info = Hyperliquid::new(Chain::Dev);
42
43    // user state
44    let res = info.user_state(wallet.address()).await.unwrap();
45
46    println!("--\nUser state: {:?}", res);
47}