sig
  type connection =
      [ `Followed_by | `Following | `Follwing_requested | `None ]
  val json_of_connection : Api11.Friendships.connection -> Api_intf.Json.t
  val connection_of_json :
    (Api11.Friendships.connection, Api_intf.Json.t) Meta_conv.Types.Decoder.t
  val connection_of_json_exn :
    (Api11.Friendships.connection, Api_intf.Json.t)
    Meta_conv.Types.Decoder.t_exn
  val ocaml_of_connection : Api11.Friendships.connection -> Ocaml.t
  val connection_of_ocaml :
    (Api11.Friendships.connection, Ocaml.t) Meta_conv.Types.Decoder.t
  val connection_of_ocaml_exn :
    (Api11.Friendships.connection, Ocaml.t) Meta_conv.Types.Decoder.t_exn
  type t =
      < connections : Api11.Friendships.connection list; id : int64;
        id_str : string; name : string; screen_name : string >
  val json_of_t : Api11.Friendships.t -> Api_intf.Json.t
  val t_of_json :
    (Api11.Friendships.t, Api_intf.Json.t) Meta_conv.Types.Decoder.t
  val t_of_json_exn :
    (Api11.Friendships.t, Api_intf.Json.t) Meta_conv.Types.Decoder.t_exn
  val ocaml_of_t : Api11.Friendships.t -> Ocaml.t
  val t_of_ocaml : (Api11.Friendships.t, Ocaml.t) Meta_conv.Types.Decoder.t
  val t_of_ocaml_exn :
    (Api11.Friendships.t, Ocaml.t) Meta_conv.Types.Decoder.t_exn
  type ts = Api11.Friendships.t list
  val json_of_ts : Api11.Friendships.ts -> Api_intf.Json.t
  val ts_of_json :
    (Api11.Friendships.ts, Api_intf.Json.t) Meta_conv.Types.Decoder.t
  val ts_of_json_exn :
    (Api11.Friendships.ts, Api_intf.Json.t) Meta_conv.Types.Decoder.t_exn
  val ocaml_of_ts : Api11.Friendships.ts -> Ocaml.t
  val ts_of_ocaml : (Api11.Friendships.ts, Ocaml.t) Meta_conv.Types.Decoder.t
  val ts_of_ocaml_exn :
    (Api11.Friendships.ts, Ocaml.t) Meta_conv.Types.Decoder.t_exn
  val lookup :
    ?screen_name:string list ->
    ?user_id:int64 list ->
    Oauth.t ->
    [> `Error of
         [> `Http of int * string
          | `Json of Api_intf.Json.t Meta_conv.Error.t ]
     | `Ok of Api11.Friendships.ts ]
  type ids = { ids : int64 list; }
  val json_of_ids : Api11.Friendships.ids -> Api_intf.Json.t
  val ids_of_json :
    (Api11.Friendships.ids, Api_intf.Json.t) Meta_conv.Types.Decoder.t
  val ids_of_json_exn :
    (Api11.Friendships.ids, Api_intf.Json.t) Meta_conv.Types.Decoder.t_exn
  val ocaml_of_ids : Api11.Friendships.ids -> Ocaml.t
  val ids_of_ocaml :
    (Api11.Friendships.ids, Ocaml.t) Meta_conv.Types.Decoder.t
  val ids_of_ocaml_exn :
    (Api11.Friendships.ids, Ocaml.t) Meta_conv.Types.Decoder.t_exn
  val gen_io :
    string ->
    ([> `Error of
          [> `Http of int * string
           | `Json of Api_intf.Json.t Meta_conv.Error.t ]
      | `Ok of int64 ]
     Spotlib.Spot.Stream.t -> 'a) ->
    Oauth.t -> 'a
  val incoming_stream :
    Oauth.t ->
    [> `Error of
         [> `Http of int * string
          | `Json of Api_intf.Json.t Meta_conv.Error.t ]
     | `Ok of int64 ]
    Spotlib.Spot.Stream.t
  val incoming :
    Oauth.t ->
    [> `Error of
         [> `Http of int * string
          | `Json of Api_intf.Json.t Meta_conv.Error.t ]
     | `Ok of int64 ]
    list
  val outgoing_stream :
    Oauth.t ->
    [> `Error of
         [> `Http of int * string
          | `Json of Api_intf.Json.t Meta_conv.Error.t ]
     | `Ok of int64 ]
    Spotlib.Spot.Stream.t
  val outgoing :
    Oauth.t ->
    [> `Error of
         [> `Http of int * string
          | `Json of Api_intf.Json.t Meta_conv.Error.t ]
     | `Ok of int64 ]
    list
  val create :
    ?user_id:int64 ->
    ?screen_name:string ->
    ?follow:bool ->
    Oauth.t ->
    [> `Error of
         [> `Http of int * string
          | `Json of Api_intf.Json.t Meta_conv.Error.t ]
     | `Ok of Api_intf.User.t ]
  val follow :
    ?user_id:int64 ->
    ?screen_name:string ->
    ?follow:bool ->
    Oauth.t ->
    [> `Error of
         [> `Http of int * string
          | `Json of Api_intf.Json.t Meta_conv.Error.t ]
     | `Ok of Api_intf.User.t ]
  val destroy :
    ?user_id:int64 ->
    ?screen_name:string ->
    Oauth.t ->
    [> `Error of
         [> `Http of int * string
          | `Json of Api_intf.Json.t Meta_conv.Error.t ]
     | `Ok of Api_intf.User.t ]
  val unfollow :
    ?user_id:int64 ->
    ?screen_name:string ->
    Oauth.t ->
    [> `Error of
         [> `Http of int * string
          | `Json of Api_intf.Json.t Meta_conv.Error.t ]
     | `Ok of Api_intf.User.t ]
end