sig
  module File :
    sig
      type t = (string * string list) list
      val codec : Topkg_opam.File.t Topkg_codec.t
      val fields : Topkg_fpath.t -> Topkg_opam.File.t Topkg_result.result
    end
  module Install :
    sig
      type field =
          [ `Bin
          | `Doc
          | `Etc
          | `Lib
          | `Lib_root
          | `Libexec
          | `Libexec_root
          | `Man
          | `Misc
          | `Sbin
          | `Share
          | `Share_root
          | `Stublibs
          | `Toplevel
          | `Unknown of string ]
      type move
      val move :
        ?maybe:bool ->
        ?dst:Topkg_fpath.t -> Topkg_fpath.t -> Topkg_opam.Install.move
      type t =
          [ `Header of string option ] *
          (Topkg_opam.Install.field * Topkg_opam.Install.move) list
      val to_string : Topkg_opam.Install.t -> string
    end
end