(typename $errno (enum u32 $ok $invalid_arg $dont_want_to $physically_unable $picket_line)) (typename $excuse (enum u8 $dog_ate $traffic $sleeping)) (typename $pair_ints (struct (field $first s32) (field $second s32))) (typename $pair_int_ptrs (struct (field $first (@witx const_pointer s32)) (field $second (@witx const_pointer s32)))) (module $foo (@interface func (export "bar") (param $an_int u32) (param $an_float f32) (result $error $errno)) (@interface func (export "baz") (param $an_excuse $excuse) (param $an_excuse_by_reference (@witx pointer $excuse)) (param $a_lamer_excuse (@witx const_pointer $excuse)) (param $two_layers_of_excuses (@witx pointer (@witx const_pointer $excuse))) (result $error $errno)) (@interface func (export "bat") (param $an_int u32) (result $error $errno) (result $doubled_it f32)) (@interface func (export "sum_of_pair") (param $an_pair $pair_ints) (result $error $errno) (result $doubled s64)) (@interface func (export "sum_of_pair_of_ptrs") (param $an_pair $pair_int_ptrs) (result $error $errno) (result $doubled s64)) )