Module type Binary.S4

type ('a, 'b, 'c, 'd) t
val encode : ('a -> (string -> unit) -> unit) -> ('b -> (string -> unit) -> unit) -> ('c -> (string -> unit) -> unit) -> ('d -> (string -> unit) -> unit) -> ('a, 'b, 'c, 'd) t -> (string -> unit) -> unit
val decode : (string -> int Stdlib.ref -> 'a) -> (string -> int Stdlib.ref -> 'b) -> (string -> int Stdlib.ref -> 'c) -> (string -> int Stdlib.ref -> 'd) -> string -> int Stdlib.ref -> ('a, 'b, 'c, 'd) t
val sizer : 'a Size.Sizer.t -> 'b Size.Sizer.t -> 'c Size.Sizer.t -> 'd Size.Sizer.t -> ('a, 'b, 'c, 'd) t Size.Sizer.t