sig
  module P : Cf_socket.P
  type t = (P.AF.tag_t, P.ST.tag_t) Cf_socket.t
  type address_t = P.AF.address_t
  val create : unit -> Cf_sock_common.T.t
  val createpair : unit -> Cf_sock_common.T.t * Cf_sock_common.T.t
  class basic :
    ?sock:Cf_sock_common.T.t ->
    unit ->
    object
      val socket_ : Cf_sock_common.T.t
      method private bind : Cf_sock_common.T.address_t -> unit
      method close : unit
      method dup : Cf_sock_common.T.t
      method dup2 : Cf_sock_common.T.t -> unit
      method fd : Unix.file_descr
      method private getpeername : Cf_sock_common.T.address_t
      method private getsockname : Cf_sock_common.T.address_t
      method getsockopt :
        ('a, P.AF.tag_t, P.ST.tag_t) Cf_socket.sockopt_t -> 'a
      method setsockopt :
        ('b, P.AF.tag_t, P.ST.tag_t) Cf_socket.sockopt_t -> '-> unit
      method private shutdown : Unix.shutdown_command -> unit
      method socket : Cf_sock_common.T.t
    end
end