sig
  module Unix :
    sig
      type t = [ `Unix of string ]
      val create : string -> Unix_syscalls.Socket.Address.Unix.t
      val to_string : Unix_syscalls.Socket.Address.Unix.t -> string
      val compare :
        Unix_syscalls.Socket.Address.Unix.t ->
        Unix_syscalls.Socket.Address.Unix.t -> int
      val t_of_sexp : Sexplib.Sexp.t -> Unix_syscalls.Socket.Address.Unix.t
      val __t_of_sexp__ :
        Sexplib.Sexp.t -> Unix_syscalls.Socket.Address.Unix.t
      val sexp_of_t : Unix_syscalls.Socket.Address.Unix.t -> Sexplib.Sexp.t
      val bin_t :
        Unix_syscalls.Socket.Address.Unix.t Core.Std.Bin_prot.Type_class.t
      val bin_read_t :
        Unix_syscalls.Socket.Address.Unix.t Core.Std.Bin_prot.Read.reader
      val __bin_read_t__ :
        (int -> Unix_syscalls.Socket.Address.Unix.t)
        Core.Std.Bin_prot.Read.reader
      val bin_reader_t :
        Unix_syscalls.Socket.Address.Unix.t
        Core.Std.Bin_prot.Type_class.reader
      val bin_size_t :
        Unix_syscalls.Socket.Address.Unix.t Core.Std.Bin_prot.Size.sizer
      val bin_write_t :
        Unix_syscalls.Socket.Address.Unix.t Core.Std.Bin_prot.Write.writer
      val bin_writer_t :
        Unix_syscalls.Socket.Address.Unix.t
        Core.Std.Bin_prot.Type_class.writer
    end
  module Inet :
    sig
      type t = [ `Inet of Unix_syscalls.Inet_addr.t * int ]
      val create :
        Unix_syscalls.Inet_addr.t ->
        port:int -> Unix_syscalls.Socket.Address.Inet.t
      val create_bind_any : port:int -> Unix_syscalls.Socket.Address.Inet.t
      val addr :
        Unix_syscalls.Socket.Address.Inet.t -> Unix_syscalls.Inet_addr.t
      val port : Unix_syscalls.Socket.Address.Inet.t -> int
      val to_string : Unix_syscalls.Socket.Address.Inet.t -> string
      val compare :
        Unix_syscalls.Socket.Address.Inet.t ->
        Unix_syscalls.Socket.Address.Inet.t -> int
      val t_of_sexp : Sexplib.Sexp.t -> Unix_syscalls.Socket.Address.Inet.t
      val __t_of_sexp__ :
        Sexplib.Sexp.t -> Unix_syscalls.Socket.Address.Inet.t
      val sexp_of_t : Unix_syscalls.Socket.Address.Inet.t -> Sexplib.Sexp.t
      val bin_t :
        Unix_syscalls.Socket.Address.Inet.t Core.Std.Bin_prot.Type_class.t
      val bin_read_t :
        Unix_syscalls.Socket.Address.Inet.t Core.Std.Bin_prot.Read.reader
      val __bin_read_t__ :
        (int -> Unix_syscalls.Socket.Address.Inet.t)
        Core.Std.Bin_prot.Read.reader
      val bin_reader_t :
        Unix_syscalls.Socket.Address.Inet.t
        Core.Std.Bin_prot.Type_class.reader
      val bin_size_t :
        Unix_syscalls.Socket.Address.Inet.t Core.Std.Bin_prot.Size.sizer
      val bin_write_t :
        Unix_syscalls.Socket.Address.Inet.t Core.Std.Bin_prot.Write.writer
      val bin_writer_t :
        Unix_syscalls.Socket.Address.Inet.t
        Core.Std.Bin_prot.Type_class.writer
    end
  type t = [ `Inet of Unix_syscalls.Inet_addr.t * int | `Unix of string ]
  val to_string : [< Unix_syscalls.Socket.Address.t ] -> string
  val to_sockaddr :
    [< Unix_syscalls.Socket.Address.t ] -> Core.Std.Unix.sockaddr
  val t_of_sexp : Sexplib.Sexp.t -> Unix_syscalls.Socket.Address.t
  val __t_of_sexp__ : Sexplib.Sexp.t -> Unix_syscalls.Socket.Address.t
  val sexp_of_t : Unix_syscalls.Socket.Address.t -> Sexplib.Sexp.t
  val bin_t : Unix_syscalls.Socket.Address.t Core.Std.Bin_prot.Type_class.t
  val bin_read_t :
    Unix_syscalls.Socket.Address.t Core.Std.Bin_prot.Read.reader
  val __bin_read_t__ :
    (int -> Unix_syscalls.Socket.Address.t) Core.Std.Bin_prot.Read.reader
  val bin_reader_t :
    Unix_syscalls.Socket.Address.t Core.Std.Bin_prot.Type_class.reader
  val bin_size_t :
    Unix_syscalls.Socket.Address.t Core.Std.Bin_prot.Size.sizer
  val bin_write_t :
    Unix_syscalls.Socket.Address.t Core.Std.Bin_prot.Write.writer
  val bin_writer_t :
    Unix_syscalls.Socket.Address.t Core.Std.Bin_prot.Type_class.writer
end