use scemadex_sdk::{demo_intent, reference_client};
#[tokio::main]
async fn main() -> scemadex_sdk::Result<()> {
let dex = reference_client();
let intent = demo_intent();
println!(
"intent: {} {:?} {} -> {} (objective {:?})",
intent.amount_in.ui(),
intent.side,
intent.input_mint,
intent.output_mint,
intent.objective,
);
let (solution, bond) = dex.quote(&intent).await?;
println!("\nsolution (digest {})", solution.intent_digest);
println!(" conviction : {:.2}", solution.conviction.0);
println!(" rationale : {}", solution.rationale);
println!(" splits ok : {}", solution.route.splits_valid());
for leg in &solution.route.legs {
println!(
" leg : {:?} {} bps -> ~{} out",
leg.venue,
leg.split_bps,
leg.expected_out.ui(),
);
}
println!(" bond : {} micro-USDC escrowed", bond.amount.0);
let (fill, outcome) = dex.execute(&intent).await?;
println!("\nexecuted: out ~{} bond {:?}", fill.amount_out.ui(), outcome);
Ok(())
}