sig
  type basic =
      Byte of char
    | Boolean of bool
    | Int16 of int
    | Int32 of int32
    | Int64 of int64
    | Uint16 of int
    | Uint32 of int32
    | Uint64 of int64
    | Double of float
    | String of string
    | Signature of OBus_value.signature
    | Object_path of OBus_path.t
    | Unix_fd of Unix.file_descr
  type single = private
      Basic of OBus_value.V.basic
    | Array of OBus_value.T.single * OBus_value.V.single list
    | Byte_array of string
    | Dict of OBus_value.T.basic * OBus_value.T.single *
        (OBus_value.V.basic * OBus_value.V.single) list
    | Structure of OBus_value.V.single list
    | Variant of OBus_value.V.single
  type sequence = OBus_value.V.single list
  val byte : char -> OBus_value.V.basic
  val boolean : bool -> OBus_value.V.basic
  val int16 : int -> OBus_value.V.basic
  val int32 : int32 -> OBus_value.V.basic
  val int64 : int64 -> OBus_value.V.basic
  val uint16 : int -> OBus_value.V.basic
  val uint32 : int32 -> OBus_value.V.basic
  val uint64 : int64 -> OBus_value.V.basic
  val double : float -> OBus_value.V.basic
  val string : string -> OBus_value.V.basic
  val signature : OBus_value.signature -> OBus_value.V.basic
  val object_path : OBus_path.t -> OBus_value.V.basic
  val unix_fd : Unix.file_descr -> OBus_value.V.basic
  val basic : OBus_value.V.basic -> OBus_value.V.single
  val array :
    OBus_value.T.single -> OBus_value.V.single list -> OBus_value.V.single
  val byte_array : string -> OBus_value.V.single
  val dict :
    OBus_value.T.basic ->
    OBus_value.T.single ->
    (OBus_value.V.basic * OBus_value.V.single) list -> OBus_value.V.single
  val structure : OBus_value.V.single list -> OBus_value.V.single
  val variant : OBus_value.V.single -> OBus_value.V.single
  val unsafe_array :
    OBus_value.T.single -> OBus_value.V.single list -> OBus_value.V.single
  val unsafe_dict :
    OBus_value.T.basic ->
    OBus_value.T.single ->
    (OBus_value.V.basic * OBus_value.V.single) list -> OBus_value.V.single
  val basic_byte : char -> OBus_value.V.single
  val basic_boolean : bool -> OBus_value.V.single
  val basic_int16 : int -> OBus_value.V.single
  val basic_int32 : int32 -> OBus_value.V.single
  val basic_int64 : int64 -> OBus_value.V.single
  val basic_uint16 : int -> OBus_value.V.single
  val basic_uint32 : int32 -> OBus_value.V.single
  val basic_uint64 : int64 -> OBus_value.V.single
  val basic_double : float -> OBus_value.V.single
  val basic_string : string -> OBus_value.V.single
  val basic_signature : OBus_value.signature -> OBus_value.V.single
  val basic_object_path : OBus_path.t -> OBus_value.V.single
  val basic_unix_fd : Unix.file_descr -> OBus_value.V.single
  val type_of_basic : OBus_value.V.basic -> OBus_value.T.basic
  val type_of_single : OBus_value.V.single -> OBus_value.T.single
  val type_of_sequence : OBus_value.V.sequence -> OBus_value.T.sequence
  val print_basic : Format.formatter -> OBus_value.V.basic -> unit
  val print_single : Format.formatter -> OBus_value.V.single -> unit
  val print_sequence : Format.formatter -> OBus_value.V.sequence -> unit
  val string_of_basic : OBus_value.V.basic -> string
  val string_of_single : OBus_value.V.single -> string
  val string_of_sequence : OBus_value.V.sequence -> string
  val basic_dup : OBus_value.V.basic -> OBus_value.V.basic
  val single_dup : OBus_value.V.single -> OBus_value.V.single
  val sequence_dup : OBus_value.V.sequence -> OBus_value.V.sequence
  val basic_close : OBus_value.V.basic -> unit Lwt.t
  val single_close : OBus_value.V.single -> unit Lwt.t
  val sequence_close : OBus_value.V.sequence -> unit Lwt.t
end