/*
 * hook.h: header for hook.c
 * 
 * Copyright 1990, 1995 Michael Sandrof, Matthew Green and others
 * Copyright 1997 EPIC Software Labs
 * See the COPYRIGHT file for license information.
 */

#ifndef __hook_h__
#define __hook_h__

enum HOOK_TYPES {
	ACTION_LIST,
	CHANNEL_NICK_LIST,
	CHANNEL_SIGNOFF_LIST,
	CHANNEL_SYNC_LIST,
	CONNECT_LIST,
	CTCP_LIST,
	CTCP_REPLY_LIST,
	CTCP_REQUEST_LIST,
	DCC_CHAT_LIST,
	DCC_CONNECT_LIST,
	DCC_LIST_LIST,
	DCC_LOST_LIST,
	DCC_OFFER_LIST,
	DCC_RAW_LIST,
	DCC_REQUEST_LIST,
	DISCONNECT_LIST,
	ENCRYPTED_NOTICE_LIST,
	ENCRYPTED_PRIVMSG_LIST,
	ERROR_LIST,
	EXEC_LIST,
	EXEC_ERRORS_LIST,
	EXEC_EXIT_LIST,
	EXEC_PROMPT_LIST,
	EXIT_LIST,
	FLOOD_LIST,
	HELP_LIST,
	HOOK_LIST,
	IDLE_LIST,
	INPUT_LIST,
	INVITE_LIST,
	JOIN_LIST,
	KICK_LIST,
	KILL_LIST,
	LEAVE_LIST,
	LIST_LIST,
	MAIL_LIST,
	MODE_LIST,
	MODE_STRIPPED_LIST,
	MSG_LIST,
	MSG_GROUP_LIST,
	NAMES_LIST,
	NICKNAME_LIST,
	NOTE_LIST,
	NOTICE_LIST,
	NOTIFY_SIGNOFF_LIST,
	NOTIFY_SIGNON_LIST,
	ODD_SERVER_STUFF_LIST,
	OPER_NOTICE_LIST,
	PONG_LIST,
	PUBLIC_LIST,
	PUBLIC_MSG_LIST,
	PUBLIC_NOTICE_LIST,
	PUBLIC_OTHER_LIST,
	RAW_IRC_LIST,
	REDIRECT_LIST,
	SEND_ACTION_LIST,
	SEND_CTCP_LIST,
	SEND_DCC_CHAT_LIST,
	SEND_MSG_LIST,
	SEND_NOTICE_LIST,
	SEND_PUBLIC_LIST,
	SEND_TO_SERVER_LIST,
	SERVER_LOST_LIST,
	SERVER_NOTICE_LIST,
	SET_LIST,
	SIGNOFF_LIST,
	SILENCE_LIST,
	STATUS_UPDATE_LIST,
	SWITCH_CHANNELS_LIST,
	SWITCH_WINDOWS_LIST,
	TIMER_LIST,
	TOPIC_LIST,
	UNLOAD_LIST,
	WALL_LIST,
	WALLOP_LIST,
	WHO_LIST,
	WIDELIST_LIST,
	WINDOW_LIST,
	WINDOW_CREATE_LIST,
	WINDOW_KILL_LIST,
	YELL_LIST,
	ZZZZ_THIS_ALWAYS_COMES_LAST_ZZZZ
};

#define NUMBER_OF_LISTS ZZZZ_THIS_ALWAYS_COMES_LAST_ZZZZ

	BUILT_IN_COMMAND(oncmd);
	BUILT_IN_COMMAND(shookcmd);
	int	do_hook 		(int, char *, ...) __A(2);
	void	flush_on_hooks 		(void);
	void	unload_on_hooks		(char *);
	void	save_hooks 		(FILE *, int);
	void	do_stack_on		(int, char *);

#endif /* __hook_h_ */
