use nado_sdk::eip712_structs::OrderType;
use nado_sdk::math::to_i128_x18;
use nado_sdk::prelude::*;
use nado_sdk::utils::private_key::private_key;
use nado_sdk::utils::time::timestamp;
#[tokio::main]
async fn main() {
let client = NadoClient::new(ClientMode::Local)
.with_signer(private_key())
.await
.unwrap();
const BTC_PERP: u32 = 2;
client
.place_order_builder()
.product_id(BTC_PERP)
.amount(to_i128_x18(1))
.price_x18(to_i128_x18(35_000))
.execute()
.await
.unwrap();
assert!(client
.place_order_builder()
.amount(to_i128_x18(1))
.price_x18(35_000)
.execute()
.await
.is_err());
let order = client
.place_order_builder()
.product_id(BTC_PERP)
.amount(to_i128_x18(1))
.price_x18(to_i128_x18(35_000))
.reduce_only(false)
.expiration(u32::MAX as u64)
.order_type(OrderType::Default)
.recv_time((timestamp() + 90) * 1000)
.build()
.unwrap();
client.place_order(order).await.unwrap();
client
.place_order_builder()
.product_id(BTC_PERP)
.amount(to_i128_x18(-1))
.price_x18(35_000)
.order_type(OrderType::FillOrKill)
.execute()
.await
.unwrap();
}