type _ case = | Case : {code : int;name : string;encoding : 'a Json_encoding.encoding;select : 'b -> 'a option;deselect : 'a -> 'b;
} -> 'b case
val make :
code:int ->
name:string ->
encoding:'a Json_encoding.encoding ->
select:('b -> 'a option) ->
deselect:('a -> 'b) ->
'b caseval merge_errs_same_code :
?definitions_path:string ->
'a case list ->
(IntMap.key * Json_schema.schema lazy_t) listval catch_all_error_case : unit -> 'a caseval get : code:int -> 'a case list -> 'a Json_encoding.encoding optionval merge_selects : ('a -> 'b option) list -> 'a -> 'b option