sig
  module Bytes :
    sig
      external length : bytes -> int = "%string_length"
      external get : bytes -> int -> char = "%string_safe_get"
      external set : bytes -> int -> char -> unit = "%string_safe_set"
      external create : int -> bytes = "caml_create_string"
      val make : int -> char -> bytes
      val init : int -> (int -> char) -> bytes
      val empty : bytes
      val copy : bytes -> bytes
      val of_string : string -> bytes
      val to_string : bytes -> string
      val sub : bytes -> int -> int -> bytes
      val sub_string : bytes -> int -> int -> string
      val extend : bytes -> int -> int -> bytes
      val fill : bytes -> int -> int -> char -> unit
      val blit : bytes -> int -> bytes -> int -> int -> unit
      val blit_string : string -> int -> bytes -> int -> int -> unit
      val concat : bytes -> bytes list -> bytes
      val cat : bytes -> bytes -> bytes
      val iter : (char -> unit) -> bytes -> unit
      val iteri : (int -> char -> unit) -> bytes -> unit
      val map : (char -> char) -> bytes -> bytes
      val mapi : (int -> char -> char) -> bytes -> bytes
      val trim : bytes -> bytes
      val escaped : bytes -> bytes
      val index : bytes -> char -> int
      val rindex : bytes -> char -> int
      val index_from : bytes -> int -> char -> int
      val rindex_from : bytes -> int -> char -> int
      val contains : bytes -> char -> bool
      val contains_from : bytes -> int -> char -> bool
      val rcontains_from : bytes -> int -> char -> bool
      val uppercase : bytes -> bytes
      val lowercase : bytes -> bytes
      val capitalize : bytes -> bytes
      val uncapitalize : bytes -> bytes
      type t = bytes
      val compare : t -> t -> int
      val unsafe_to_string : bytes -> string
      val unsafe_of_string : string -> bytes
      external unsafe_get : bytes -> int -> char = "%string_unsafe_get"
      external unsafe_set : bytes -> int -> char -> unit
        = "%string_unsafe_set"
      external unsafe_blit : bytes -> int -> bytes -> int -> int -> unit
        = "caml_blit_string" "noalloc"
      external unsafe_fill : bytes -> int -> int -> char -> unit
        = "caml_fill_string" "noalloc"
    end
  module Buffer :
    sig
      type t = Buffer.t
      val create : int -> t
      val contents : t -> string
      val to_bytes : t -> bytes
      val sub : t -> int -> int -> string
      val blit : t -> int -> bytes -> int -> int -> unit
      val nth : t -> int -> char
      val length : t -> int
      val clear : t -> unit
      val reset : t -> unit
      val add_char : t -> char -> unit
      val add_string : t -> string -> unit
      val add_bytes : t -> bytes -> unit
      val add_substring : t -> string -> int -> int -> unit
      val add_subbytes : t -> bytes -> int -> int -> unit
      val add_substitute : t -> (string -> string) -> string -> unit
      val add_buffer : t -> t -> unit
      val add_channel : t -> in_channel -> int -> unit
      val output_buffer : out_channel -> t -> unit
    end
  module Filename :
    sig
      val current_dir_name : string
      val parent_dir_name : string
      val dir_sep : string
      val concat : string -> string -> string
      val is_relative : string -> bool
      val is_implicit : string -> bool
      val check_suffix : string -> string -> bool
      val chop_suffix : string -> string -> string
      val chop_extension : string -> string
      val basename : string -> string
      val dirname : string -> string
      val temp_file : ?temp_dir:string -> string -> string -> string
      val open_temp_file :
        ?mode:open_flag list ->
        ?temp_dir:string -> string -> string -> string * out_channel
      val get_temp_dir_name : unit -> string
      val set_temp_dir_name : string -> unit
      val temp_dir_name : string
      val quote : string -> string
    end
  exception Lexer_error of string
  val download_dir :
    OpamTypes.dirname OpamTypes.download ->
    OpamTypes.generic_file OpamTypes.download
  val download_file :
    OpamTypes.filename OpamTypes.download ->
    OpamTypes.generic_file OpamTypes.download
  val string_of_download : 'OpamTypes.download -> string
  val string_of_generic_file : OpamTypes.generic_file -> string
  val string_of_address : OpamTypes.address -> string
  val address_of_string : string -> OpamTypes.address
  val parse_url :
    OpamTypes.address -> OpamTypes.address * OpamTypes.repository_kind
  val guess_version_control :
    OpamTypes.dirname -> [ `darcs | `git | `hg ] option
  val string_of_repository_kind : OpamTypes.repository_kind -> string
  val repository_kind_of_string : string -> OpamTypes.repository_kind
  val action_contents : 'OpamTypes.action -> 'a
  val full_action_contents : 'OpamTypes.action -> 'a list
  val string_of_cause : ('pkg -> string) -> 'pkg OpamTypes.cause -> string
  val string_of_upload : OpamTypes.upload -> string
  val repository_kind_of_pin_kind :
    OpamTypes.pin_kind -> OpamTypes.repository_kind option
  val pin_kind_of_string : string -> OpamTypes.pin_kind
  val string_of_pin_kind : OpamTypes.pin_kind -> string
  val pin_option_of_string :
    ?kind:OpamTypes.pin_kind -> ?guess:bool -> string -> OpamTypes.pin_option
  val string_of_pin_option : OpamTypes.pin_option -> string
  val kind_of_pin_option : OpamTypes.pin_option -> OpamTypes.pin_kind
  val pin_of_url :
    OpamTypes.address * OpamTypes.repository_kind -> OpamTypes.pin_option
  val string_of_shell : OpamTypes.shell -> string
  val pos_null : OpamTypes.pos
  val string_of_pos : OpamTypes.pos -> string
  val string_of_relop : OpamTypes.relop -> string
  val relop_of_string : string -> OpamTypes.relop
  val string_of_logop : OpamTypes.logop -> string
  val logop_of_string : string -> OpamTypes.logop
  val string_of_pfxop : OpamTypes.pfxop -> string
  val pfxop_of_string : string -> OpamTypes.pfxop
  val filter_ident_of_string :
    string ->
    OpamTypes.name list * OpamTypes.variable * (string * string) option
  val filter_deps :
    ?build:bool ->
    ?test:bool -> ?doc:bool -> OpamTypes.ext_formula -> OpamTypes.formula
  val map_success :
    ('-> 'b) ->
    ('a, 'fail) OpamTypes.result -> ('b, 'fail) OpamTypes.result
end