weighted_pool_swap/
weighted_pool_swap.rs1use solmath::{fp, weighted_pool_swap, SolMathError, SCALE};
2
3fn as_decimal(x: u128) -> f64 {
4 x as f64 / SCALE as f64
5}
6
7fn main() -> Result<(), SolMathError> {
8 let balance_in = fp("1000")?;
11 let balance_out = fp("1000")?;
12 let amount_in = fp("10")?;
13 let weight_in = fp("0.5")?;
14 let weight_out = fp("0.5")?;
15 let fee_rate = fp("0.003")?;
16
17 let (net_out, fee) = weighted_pool_swap(
18 balance_in,
19 balance_out,
20 weight_in,
21 weight_out,
22 amount_in,
23 fee_rate,
24 )?;
25
26 println!("net_out: {:.12}", as_decimal(net_out));
27 println!("fee: {:.12}", as_decimal(fee));
28
29 Ok(())
30}