wit-bindgen-cli 0.57.1

CLI tool to generate bindings for WIT documents and the component model.
package my:lift-lower-foreign;

interface a {
  type t1 = u32;
  record t2 { a: t1 }
  flags t3 { a, b, c }
  type t4 = tuple<t1, t2, t3>;
  variant t5 { a, b(t2), c(t3) }
  enum t6 { a, b, c }
  type t7 = option<t2>;
  type t8 = result<t2, t3>;
  type t10 = list<t5>;
  type t11 = t10;
}

interface the-interface {
  use a.{t1 as u1, t2 as u2, t3 as u3, t4 as u4, t5 as u5};
  use a.{t6 as u6, t7 as u7, t8 as %u8};
  use a.{t10 as u10, t11 as u11};

  f1: func(a: u1) -> u1;
  f2: func(a: u2) -> u2;
  f3: func(a: u3) -> u3;
  f4: func(a: u4) -> u4;
  f5: func(a: u5) -> u5;
  f6: func(a: u6) -> u6;
  f7: func(a: u7) -> u7;
  f8: func(a: %u8) -> %u8;
  f10: func(a: u10) -> u10;
  f11: func(a: u11) -> u11;
}

world foo {
  use a.{t1 as u1, t2 as u2, t3 as u3, t4 as u4, t5 as u5};
  use a.{t6 as u6, t7 as u7, t8 as %u8};
  use a.{t10 as u10, t11 as u11};

  export foo-f1: func(a: u1) -> u1;
  export foo-f2: func(a: u2) -> u2;
  export foo-f3: func(a: u3) -> u3;
  export foo-f4: func(a: u4) -> u4;
  export foo-f5: func(a: u5) -> u5;
  export foo-f6: func(a: u6) -> u6;
  export foo-f7: func(a: u7) -> u7;
  export foo-f8: func(a: %u8) -> %u8;
  export foo-f10: func(a: u10) -> u10;
  export foo-f11: func(a: u11) -> u11;

  import the-interface;
  export the-interface;
}