sig
  type msgid
  type conn
  type modattr = Ldap_types.modify_optype * string * string list
  type result = Ldap_types.search_result_entry list
  type entry = Ldap_types.search_result_entry
  type authmethod = [ `SASL | `SIMPLE ]
  type search_result =
    [ `Entry of Ldap_funclient.entry | `Referral of string list ]
  val init :
    ?connect_timeout:int ->
    ?version:int -> string list -> Ldap_funclient.conn
  val unbind : Ldap_funclient.conn -> unit
  val bind_s :
    ?who:string ->
    ?cred:string -> ?auth_method:[> `SIMPLE ] -> Ldap_funclient.conn -> unit
  val search :
    ?base:string ->
    ?scope:Ldap_types.search_scope ->
    ?aliasderef:Ldap_types.alias_deref ->
    ?sizelimit:int32 ->
    ?timelimit:int32 ->
    ?attrs:string list ->
    ?attrsonly:bool -> Ldap_funclient.conn -> string -> Ldap_funclient.msgid
  val get_search_entry :
    Ldap_funclient.conn ->
    Ldap_funclient.msgid ->
    [> `Entry of Ldap_types.search_result_entry | `Referral of string list ]
  val abandon : Ldap_funclient.conn -> Ldap_funclient.msgid -> unit
  val search_s :
    ?base:string ->
    ?scope:Ldap_types.search_scope ->
    ?aliasderef:Ldap_types.alias_deref ->
    ?sizelimit:int32 ->
    ?timelimit:int32 ->
    ?attrs:string list ->
    ?attrsonly:bool ->
    Ldap_funclient.conn ->
    string ->
    [> `Entry of Ldap_types.search_result_entry | `Referral of string list ]
    list
  val add_s : Ldap_funclient.conn -> Ldap_funclient.entry -> unit
  val delete_s : Ldap_funclient.conn -> dn:string -> unit
  val modify_s :
    Ldap_funclient.conn ->
    dn:string ->
    mods:(Ldap_types.modify_optype * string * string list) list -> unit
  val modrdn_s :
    ?deleteoldrdn:bool ->
    ?newsup:'a option ->
    Ldap_funclient.conn -> dn:string -> newdn:string -> unit
end