sig
  type serial = int32
  type body = OBus_value.V.sequence
  type typ =
      Method_call of OBus_path.t * OBus_name.interface * OBus_name.member
    | Method_return of OBus_message.serial
    | Error of OBus_message.serial * OBus_name.error
    | Signal of OBus_path.t * OBus_name.interface * OBus_name.member
  type flags = { no_reply_expected : bool; no_auto_start : bool; }
  val no_reply_expected : OBus_message.flags -> bool
  val no_auto_start : OBus_message.flags -> bool
  val make_flags :
    ?no_reply_expected:bool ->
    ?no_auto_start:bool -> unit -> OBus_message.flags
  val default_flags : OBus_message.flags
  type t = {
    flags : OBus_message.flags;
    serial : OBus_message.serial;
    typ : OBus_message.typ;
    destination : OBus_name.bus;
    sender : OBus_name.bus;
    body : OBus_message.body;
  }
  val flags : OBus_message.t -> OBus_message.flags
  val serial : OBus_message.t -> OBus_message.serial
  val typ : OBus_message.t -> OBus_message.typ
  val destination : OBus_message.t -> OBus_name.bus
  val sender : OBus_message.t -> OBus_name.bus
  val body : OBus_message.t -> OBus_message.body
  val make :
    ?flags:OBus_message.flags ->
    ?serial:OBus_message.serial ->
    ?sender:OBus_name.bus ->
    ?destination:OBus_name.bus ->
    typ:OBus_message.typ -> OBus_message.body -> OBus_message.t
  val method_call :
    ?flags:OBus_message.flags ->
    ?serial:OBus_message.serial ->
    ?sender:OBus_name.bus ->
    ?destination:OBus_name.bus ->
    path:OBus_path.t ->
    ?interface:OBus_name.interface ->
    member:OBus_name.member -> OBus_message.body -> OBus_message.t
  val method_return :
    ?flags:OBus_message.flags ->
    ?serial:OBus_message.serial ->
    ?sender:OBus_name.bus ->
    ?destination:OBus_name.bus ->
    reply_serial:OBus_message.serial -> OBus_message.body -> OBus_message.t
  val error :
    ?flags:OBus_message.flags ->
    ?serial:OBus_message.serial ->
    ?sender:OBus_name.bus ->
    ?destination:OBus_name.bus ->
    reply_serial:OBus_message.serial ->
    error_name:OBus_name.error -> OBus_message.body -> OBus_message.t
  val signal :
    ?flags:OBus_message.flags ->
    ?serial:OBus_message.serial ->
    ?sender:OBus_name.bus ->
    ?destination:OBus_name.bus ->
    path:OBus_path.t ->
    interface:OBus_name.interface ->
    member:OBus_name.member -> OBus_message.body -> OBus_message.t
  exception Invalid_reply of string
  val invalid_reply :
    method_call:OBus_message.t ->
    expected_signature:OBus_value.signature ->
    method_return:OBus_message.t -> exn
  val print : Format.formatter -> OBus_message.t -> unit
end