function cb_void_void(f: () => void): void;
function cb_i_void(f: (a: i32) => void): void;
function cb_str_str(f: (a: String) => String): String;

struct Person {
  name: String;
  age: i32;
}

function cb_struct(f: (data: Person) => Person): void;