sig
  type error = Corrupted of (string * string) | Version of int * int
  val pp_error : Stdlib.Format.formatter -> Topkg.Private.Codec.error -> unit
  exception Error of Topkg.Private.Codec.error
  type 'a t
  val v :
    kind:string ->
    enc:('a -> string) -> dec:(string -> 'a) -> 'a Topkg.Private.Codec.t
  val kind : 'a Topkg.Private.Codec.t -> string
  val enc : 'a Topkg.Private.Codec.t -> 'a -> string
  val dec : 'a Topkg.Private.Codec.t -> string -> 'a
  val dec_result : 'a Topkg.Private.Codec.t -> string -> 'a Topkg.result
  val with_kind :
    string -> 'a Topkg.Private.Codec.t -> 'a Topkg.Private.Codec.t
  val write :
    Topkg.fpath -> 'a Topkg.Private.Codec.t -> 'a -> unit Topkg.result
  val read : Topkg.fpath -> 'a Topkg.Private.Codec.t -> 'a Topkg.result
  val unit : unit Topkg.Private.Codec.t
  val const : 'a -> 'a Topkg.Private.Codec.t
  val bool : bool Topkg.Private.Codec.t
  val int : int Topkg.Private.Codec.t
  val string : string Topkg.Private.Codec.t
  val option : 'a Topkg.Private.Codec.t -> 'a option Topkg.Private.Codec.t
  val result :
    ok:'a Topkg.Private.Codec.t ->
    error:'b Topkg.Private.Codec.t -> ('a, 'b) Topkg.r Topkg.Private.Codec.t
  val list : 'a Topkg.Private.Codec.t -> 'a list Topkg.Private.Codec.t
  val pair :
    'a Topkg.Private.Codec.t ->
    'b Topkg.Private.Codec.t -> ('a * 'b) Topkg.Private.Codec.t
  val t3 :
    'a Topkg.Private.Codec.t ->
    'b Topkg.Private.Codec.t ->
    'c Topkg.Private.Codec.t -> ('a * 'b * 'c) Topkg.Private.Codec.t
  val t4 :
    'a Topkg.Private.Codec.t ->
    'b Topkg.Private.Codec.t ->
    'c Topkg.Private.Codec.t ->
    'd Topkg.Private.Codec.t -> ('a * 'b * 'c * 'd) Topkg.Private.Codec.t
  val t5 :
    'a Topkg.Private.Codec.t ->
    'b Topkg.Private.Codec.t ->
    'c Topkg.Private.Codec.t ->
    'd Topkg.Private.Codec.t ->
    'e Topkg.Private.Codec.t ->
    ('a * 'b * 'c * 'd * 'e) Topkg.Private.Codec.t
  val alt :
    kind:string ->
    ('a -> int) -> 'a Topkg.Private.Codec.t array -> 'a Topkg.Private.Codec.t
  val version : int -> 'a Topkg.Private.Codec.t -> 'a Topkg.Private.Codec.t
  val view :
    ?kind:string ->
    ('a -> 'b) * ('b -> 'a) ->
    'b Topkg.Private.Codec.t -> 'a Topkg.Private.Codec.t
  val msg : [ `Msg of string ] Topkg.Private.Codec.t
  val result_error_msg :
    'a Topkg.Private.Codec.t -> 'a Topkg.result Topkg.Private.Codec.t
  val fpath : Topkg.Fpath.t Topkg.Private.Codec.t
  val cmd : Topkg.Cmd.t Topkg.Private.Codec.t
end