use strike_sdk::prelude::*;
#[tokio::main]
async fn main() -> Result<()> {
tracing_subscriber::fmt::init();
let private_key = std::env::var("PRIVATE_KEY").expect("PRIVATE_KEY env var required");
let client = StrikeClient::new(StrikeConfig::bsc_testnet())
.with_private_key(&private_key)
.build()?;
let signer = client.signer_address().unwrap();
println!("wallet: {signer}");
let balance = client.vault().usdt_balance(signer).await?;
println!("USDT balance: {balance}");
client.vault().approve_usdt().await?;
println!("vault approved");
let markets = client.indexer().get_active_markets().await?;
let market = match markets.first() {
Some(m) => m,
None => {
println!("no active markets found");
return Ok(());
}
};
println!(
"using factory market {} / orderbook market {:?} (expiry: {})",
market.factory_market_id, market.orderbook_market_id, market.expiry_time
);
let orders = client
.orders()
.place_market(
market,
&[OrderParam::bid(40, 100), OrderParam::ask(60, 100)],
)
.await?;
println!("placed {} orders:", orders.len());
for o in &orders {
println!(" order {} | side: {:?}", o.order_id, o.side);
}
let ids: Vec<_> = orders.iter().map(|o| o.order_id).collect();
client.orders().cancel(&ids).await?;
println!("cancelled {} orders", ids.len());
Ok(())
}