use dotenv::dotenv;
use lighter_rs::client::TxClient;
use std::env;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::fmt::init();
dotenv().ok();
let private_key =
env::var("LIGHTER_API_KEY").expect("LIGHTER_API_KEY must be set in .env file");
let account_index: i64 = env::var("LIGHTER_ACCOUNT_INDEX")
.expect("LIGHTER_ACCOUNT_INDEX must be set in .env file")
.parse()
.expect("LIGHTER_ACCOUNT_INDEX must be a valid number");
let api_key_index: u8 = env::var("LIGHTER_API_KEY_INDEX")
.unwrap_or_else(|_| "0".to_string())
.parse()
.expect("LIGHTER_API_KEY_INDEX must be a valid number");
let api_url = env::var("LIGHTER_API_URL").expect("LIGHTER_API_URL must be set in .env file");
let tx_client = TxClient::new(
&api_url,
&private_key,
account_index,
api_key_index,
304, )?;
let market_index = 0u8; let mid_price = 300_000;
tracing::info!("Creating market order...");
match tx_client
.create_market_order(
market_index,
chrono::Utc::now().timestamp_millis(),
100_000, mid_price,
0, false, None,
)
.await
{
Ok(order) => {
tracing::info!(" ✓ Order created and signed");
match tx_client.send_transaction(&order).await {
Ok(response) => {
if response.code == 200 {
tracing::info!(" ✓ Order submitted successfully!");
if let Some(hash) = response.tx_hash {
tracing::info!(" Tx Hash: {}", hash);
}
} else {
tracing::info!(" ✗ Order failed: {:?}", response.message);
}
}
Err(e) => tracing::info!(" ✗ Submit error: {}", e),
}
}
Err(e) => tracing::info!(" ✗ Order creation error: {}", e),
}
Ok(())
}