type error = | Corrupted of string * string| Version of int * int
val v : kind:string -> enc:('a -> string) -> dec:(string -> 'a) -> 'a tval kind : 'a t -> stringval enc : 'a t -> 'a -> stringval dec : 'a t -> string -> 'aval dec_result : 'a t -> string -> 'a resultval with_kind : string -> 'a t -> 'a tval option : 'a t -> 'a option tval result : ok:'a t -> error:'b t -> ('a, 'b) r tval list : 'a t -> 'a list tval pair : 'a t -> 'b t -> ('a * 'b) tval t3 : 'a t -> 'b t -> 'c t -> ('a * 'b * 'c) tval t4 : 'a t -> 'b t -> 'c t -> 'd t -> ('a * 'b * 'c * 'd) tval t5 : 'a t -> 'b t -> 'c t -> 'd t -> 'e t -> ('a * 'b * 'c * 'd * 'e) tval alt : kind:string -> ('a -> int) -> 'a t array -> 'a tval version : int -> 'a t -> 'a tval view : ?kind:string -> (('a -> 'b) * ('b -> 'a)) -> 'b t -> 'a tval msg : [ `Msg of string ] tval result_error_msg : 'a t -> 'a result t