#ifndef NICKSERV_HPP_
#define NICKSERV_HPP_


class Client; // fwd
class NickServ {
#ifdef USE_NICKSERV
    private:
        int dirfd;

        bool has_pw(const char* nick) const;
        const char* get_pw(const char* nick) const; ///< static buffer
        bool set_pw(const char* nick, const char* pw);
        bool check_pw(const char*, const char* pw) const;

    protected:
        bool reply(Client* client, const char* msg) const;

        bool reg(Client* client, const char* pw);
        bool ident(Client* client, const char* pw);
        bool drop(Client*);
#endif

        static NickServ* inst;
        NickServ(const char* spooldir);

    public:
        static NickServ* getInst();
        ~NickServ();

        static bool is_enabled();
        bool is_reg(const char*);
        bool handle(Client* client, const char* params[], unsigned nparams); ///< the /msg
};


#endif