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;