val search : ?ctx:(string * string) list -> ?sort:[ `Asc | `Desc ] -> ?filter:string -> ?limit:int -> ?offset:int -> unit -> (Sihl.Contract.User.t list * int) Lwt.t
val find_opt : ?ctx:(string * string) list -> string -> Sihl.Contract.User.t option Lwt.t
val find : ?ctx:(string * string) list -> string -> Sihl.Contract.User.t Lwt.t
val find_by_email : ?ctx:(string * string) list -> string -> Sihl.Contract.User.t Lwt.t
val find_by_email_opt : ?ctx:(string * string) list -> string -> Sihl.Contract.User.t option Lwt.t
val update_password : ?ctx:(string * string) list -> ?password_policy:(string -> (unit, string) Result.t) -> Sihl.Contract.User.t -> old_password:string -> new_password:string -> new_password_confirmation:string -> (Sihl.Contract.User.t, string) Result.t Lwt.t
val update : ?ctx:(string * string) list -> ?email:string -> ?username:string -> ?name:string -> ?given_name:string -> ?status:Sihl.Contract.User.status -> Sihl.Contract.User.t -> Sihl.Contract.User.t Lwt.t
val update_details : user:Sihl.Contract.User.t -> email:string -> username:string option -> Sihl.Contract.User.t Lwt.t
val set_password : ?ctx:(string * string) list -> ?password_policy:(string -> (unit, string) Result.t) -> Sihl.Contract.User.t -> password:string -> password_confirmation:string -> (Sihl.Contract.User.t, string) Result.t Lwt.t
val create_user : ?ctx:(string * string) list -> ?username:string -> ?name:string -> ?given_name:string -> password:string -> string -> Sihl.Contract.User.t Lwt.t
val create_admin : ?ctx:(string * string) list -> ?username:string -> ?name:string -> ?given_name:string -> password:string -> string -> Sihl.Contract.User.t Lwt.t
val register_user : ?ctx:(string * string) list -> ?password_policy:(string -> (unit, string) Stdlib.result) -> ?username:string -> ?name:string -> ?given_name:string -> string -> password:string -> password_confirmation:string -> (Sihl.Contract.User.t, [ `Already_registered | `Invalid_password_provided of string ]) Result.t Lwt.t
val login : ?ctx:(string * string) list -> string -> password:string -> (Sihl.Contract.User.t, [ `Does_not_exist | `Incorrect_password ]) Result.t Lwt.t
val register : unit -> Sihl__.Core_container.Service.t
val lifecycle : Sihl__.Core_lifecycle.lifecycle