module WEBrick
  module HTTPAuth
    class Htpasswd
      @path: String

      @mtime: Time

      @passwd: Hash[String, String]

      @auth_type: String

      @password_hash: (:crypt | :bcrypt)

      include UserDB

      def initialize: (String path, ?password_hash: (:crypt | :bcrypt)?) -> void

      def reload: () -> void

      def flush: (?String? output) -> void

      def get_passwd: (String realm, String user, bool reload_db) -> String?

      def set_passwd: (String realm, String user, String pass) -> void

      def delete_passwd: (String realm, String user) -> String

      def each: () { ([String, String]) -> void } -> void
    end
  end
end
