type cst = pri | Arg_int_lit(int)| Arg_string_lit(string)| Arg_js_literal(string)
;type label = pri | Obj_label of {name: string,
}| Obj_empty| Obj_optional of {name: string,for_sure_no_nested_option: bool,
}
;type attr = | Poly_var_string of {descr: list((string, string)),
}| Poly_var of {descr: option(list((string, string))),
}| Int(list((string, int)))| Arg_cst(cst)| Fn_uncurry_arity(int)| Extern_unit| Nothing| Ignore| Unwrap
;type label_noname = | Arg_label| Arg_empty| Arg_optional
;type obj_param = {obj_arg_type: attr,obj_arg_label: label,
};type params = list(param);let cst_obj_literal: string => cst;let cst_string: string => cst;let obj_label: string => label;let optional: bool => string => label;