/* This file defines a number of default operclass blocks which you can
 * use in your oper blocks (via oper::operclass).
 *
 * This file is normally included from your unrealircd.conf through:
 * include "operclass.default.conf";
 *
 * The operclass block is extensively documented at:
 * https://www.unrealircd.org/docs/Operclass_block
 *
 * DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
 * Instead, if you want to change the privileges in an operclass block,
 * you should copy the definition, or this entire file, to either your
 * unrealircd.conf or some other file (eg: operclass.conf) that you
 * you will include from your unrealircd.conf.
 * Then edit it, and while doing so don't forget to change the name
 * of your custom operclass block(s), so operclass <name>.
 */

/* Local IRC Operator */
operclass locop {
	privileges {
		privacy;
		chat;
		channel;
		client;
		immune;
		self;
		notice { local; };
		server { opermotd; info; close; module; dns; rehash; };
		route { local; };
		kill { local; };
		tkl {
			kline;
			zline { local; };
		};
		trace { local; invisible-users; };
		map;
	};
};

/* Global IRC Operator */
operclass globop {
	privileges {
		privacy;
		chat;
		channel;
		client;
		immune;
		notice;
		self;
		server { opermotd; info; close; remote; module; dns; rehash; };
		route;
		kill;
		tkl { shun; zline; kline; gline; };
		trace;
		who;
		override { see; };
		map;
	};
};

/* Server administrator */
operclass admin {
	privileges {
		privacy;
		chat;
		channel;
		client;
		immune;
		notice;
		self;
		server { opermotd; info; close; remote; module; dns; addline; rehash; description; addmotd; addomotd; tsctl; };
		route;
		kill;
		tkl { shun; zline; kline; gline; };
		spamfilter;
		trace;
		who;
		override { see; };
		map;
	};
};

/* Services Admin */
operclass services-admin {
	privileges {
		privacy;
		chat;
		channel;
		client;
		immune;
		notice;
		self;
		server { opermotd; info; close; remote; module; dns; addline; rehash; description; addmotd; addomotd; tsctl; };
		route;
		kill;
		tkl { shun; zline; kline; gline; };
		spamfilter;
		trace;
		who;
		sajoin;
		sapart;
		samode;
		override { see; };
	};
};

/* Network Administrator */
operclass netadmin {
	privileges {
		privacy;
		chat;
		channel;
		client;
		immune;
		notice;
		self;
		server { opermotd; info; close; remote; module; dns; addline; rehash; description; addmotd; addomotd; tsctl; };
		kill;
		tkl { shun; zline; kline; gline; };
		route;
		spamfilter;
		trace;
		who;
		sajoin;
		sapart;
		samode;
		servicebot { deop; kill; };
		override { see; };
		map;
	};
};

/* Same as 'globop' operclass, but with OperOverride capabilities added */
operclass globop-with-override {
	parent globop;
	privileges {
		override;
	};
};

/* Same as 'admin' operclass, but with OperOverride capabilities added */
operclass admin-with-override {
	parent admin;
	privileges {
		override;
	};
};

/* Same as 'services-admin' operclass, but with OperOverride capabilities added */
operclass services-admin-with-override {
	parent services-admin;
	privileges {
		override;
	};
};

/* Same as 'netadmin' operclass, but with OperOverride capabilities added */
operclass netadmin-with-override {
	parent netadmin;
	privileges {
		override;
	};
};
