///|
fn main {
  let reference = @types.Date::new(2024, 1, 1).unwrap()
  let maturity = @types.Date::new(2025, 1, 1).unwrap()
  let bond = @instrument.FixedRateBond::new(
    reference,
    maturity,
    1000.0,
    0.04,
    @calendar.SemiAnnual,
    @calendar.Actual365Fixed,
    @calendar.HolidayCalendar::empty(),
    @calendar.Unadjusted,
  ).unwrap()
  let flows = bond.cash_flows().unwrap()
  let curve = @curve.FlatCurve::new(reference, 0.035).unwrap()
  let value = @pricing.present_value(flows, @curve.DiscountCurve::flat(curve)).unwrap()
  println("moonbit-fixedincome bond example")
  println("cash flows: \{value.cash_flow_count}")
  println("present value: \{value.value}")
}