+#pragma once
+
+class BanCacheManager;
+class BufferedSocket;
+class Channel;
+class Command;
+class ConfigStatus;
+class ConfigTag;
+class Extensible;
+class FakeUser;
+class InspIRCd;
+class Invitation;
+class IOHookProvider;
+class LocalUser;
+class Membership;
+class Module;
+class OperInfo;
+class ProtocolServer;
+class RemoteUser;
+class Server;
+class ServerConfig;
+class ServerLimits;
+class Thread;
+class User;
+class XLine;
+class XLineManager;
+class XLineFactory;
+struct ConnectClass;
+struct ModResult;
+
+#include "hashcomp.h"
+#include "base.h"
+
+typedef TR1NS::unordered_map<std::string, User*, irc::insensitive, irc::StrHashComp> user_hash;
+typedef TR1NS::unordered_map<std::string, Channel*, irc::insensitive, irc::StrHashComp> chan_hash;
+
+/** A list of failed port bindings, used for informational purposes on startup */
+typedef std::vector<std::pair<std::string, std::string> > FailedPortList;
+
+/** List of channels to consider when building the neighbor list of a user