package tempest

type PermissionFlags BitSet

const (
	CREATE_INSTANT_INVITE_PERMISSION_FLAG PermissionFlags = 1 << iota
	KICK_MEMBERS_PERMISSION_FLAG
	BAN_MEMBERS_PERMISSION_FLAG
	ADMINISTRATOR_PERMISSION_FLAG
	MANAGE_CHANNELS_PERMISSION_FLAG
	MANAGE_GUILD_PERMISSION_FLAG
	ADD_REACTIONS_PERMISSION_FLAG
	VIEW_AUDIT_LOG_PERMISSION_FLAG
	PRIORITY_SPEAKER_PERMISSION_FLAG
	STREAM_PERMISSION_FLAG
	VIEW_CHANNEL_PERMISSION_FLAG
	SEND_MESSAGES_PERMISSION_FLAG
	SEND_TTS_MESSAGES_PERMISSION_FLAG
	MANAGE_MESSAGES_PERMISSION_FLAG
	EMBED_LINKS_PERMISSION_FLAG
	ATTACH_FILES_PERMISSION_FLAG
	READ_MESSAGE_HISTORY_PERMISSION_FLAG
	MENTION_EVERYONE_PERMISSION_FLAG
	USE_EXTERNAL_EMOJIS_PERMISSION_FLAG
	VIEW_GUILD_INSIGHTS_PERMISSION_FLAG
	CONNECT_PERMISSION_FLAG
	SPEAK_PERMISSION_FLAG
	MUTE_MEMBERS_PERMISSION_FLAG
	DEAFEN_MEMBERS_PERMISSION_FLAG
	MOVE_MEMBERS_PERMISSION_FLAG
	USE_VAD_PERMISSION_FLAG
	CHANGE_NICKNAME_PERMISSION_FLAG
	MANAGE_NICKNAMES_PERMISSION_FLAG
	MANAGE_ROLES_PERMISSION_FLAG
	MANAGE_WEBHOOKS_PERMISSION_FLAG
	MANAGE_GUILD_EXPRESSIONS_PERMISSION_FLAG
	USE_APPLICATION_COMMANDS_PERMISSION_FLAG
	REQUEST_TO_SPEAK_PERMISSION_FLAG
	MANAGE_EVENTS_PERMISSION_FLAG
	MANAGE_THREADS_PERMISSION_FLAG
	CREATE_PUBLIC_THREADS_PERMISSION_FLAG
	CREATE_PRIVATE_THREADS_PERMISSION_FLAG
	USE_EXTERNAL_STICKERS_PERMISSION_FLAG
	SEND_MESSAGES_IN_THREADS_PERMISSION_FLAG
	USE_EMBEDDED_ACTIVITIES_PERMISSION_FLAG
	MODERATE_MEMBERS_PERMISSION_FLAG
	VIEW_CREATOR_MONETIZATION_ANALYTICS_PERMISSION_FLAG
	USE_SOUNDBOARD_PERMISSION_FLAG
	CREATE_GUILD_EXPRESSIONS_PERMISSION_FLAG
	CREATE_EVENTS_PERMISSION_FLAG
	USE_EXTERNAL_SOUNDS_PERMISSION_FLAG
	SEND_VOICE_MESSAGES_PERMISSION_FLAG
	_
	_
	SEND_POLLS_PERMISSION_FLAG
	USE_EXTERNAL_APPS_PERMISSION_FLAG

	ALL_TEXT_PERMISSION_FLAGS = VIEW_CHANNEL_PERMISSION_FLAG |
		SEND_MESSAGES_PERMISSION_FLAG |
		SEND_TTS_MESSAGES_PERMISSION_FLAG |
		MANAGE_MESSAGES_PERMISSION_FLAG |
		EMBED_LINKS_PERMISSION_FLAG |
		ATTACH_FILES_PERMISSION_FLAG |
		READ_MESSAGE_HISTORY_PERMISSION_FLAG |
		MENTION_EVERYONE_PERMISSION_FLAG |
		SEND_VOICE_MESSAGES_PERMISSION_FLAG |
		SEND_POLLS_PERMISSION_FLAG |
		USE_EXTERNAL_APPS_PERMISSION_FLAG

	ALL_THREAD_PERMISSION_FLAGS = MANAGE_THREADS_PERMISSION_FLAG |
		CREATE_PUBLIC_THREADS_PERMISSION_FLAG |
		CREATE_PRIVATE_THREADS_PERMISSION_FLAG |
		SEND_MESSAGES_IN_THREADS_PERMISSION_FLAG

	ALL_VOICE_PERMISSION_FLAGS = VIEW_CHANNEL_PERMISSION_FLAG |
		CONNECT_PERMISSION_FLAG |
		SPEAK_PERMISSION_FLAG |
		STREAM_PERMISSION_FLAG |
		MUTE_MEMBERS_PERMISSION_FLAG |
		DEAFEN_MEMBERS_PERMISSION_FLAG |
		MOVE_MEMBERS_PERMISSION_FLAG |
		USE_VAD_PERMISSION_FLAG |
		PRIORITY_SPEAKER_PERMISSION_FLAG |
		USE_SOUNDBOARD_PERMISSION_FLAG |
		USE_EXTERNAL_SOUNDS_PERMISSION_FLAG |
		REQUEST_TO_SPEAK_PERMISSION_FLAG |
		USE_EMBEDDED_ACTIVITIES_PERMISSION_FLAG |
		CREATE_GUILD_EXPRESSIONS_PERMISSION_FLAG |
		CREATE_EVENTS_PERMISSION_FLAG |
		MANAGE_EVENTS_PERMISSION_FLAG

	ALL_CHANNEL_PERMISSION_FLAGS = ALL_TEXT_PERMISSION_FLAGS |
		ALL_THREAD_PERMISSION_FLAGS |
		ALL_VOICE_PERMISSION_FLAGS |
		CREATE_INSTANT_INVITE_PERMISSION_FLAG |
		MANAGE_CHANNELS_PERMISSION_FLAG |
		ADD_REACTIONS_PERMISSION_FLAG |
		USE_EXTERNAL_EMOJIS_PERMISSION_FLAG |
		USE_APPLICATION_COMMANDS_PERMISSION_FLAG |
		USE_EXTERNAL_STICKERS_PERMISSION_FLAG

	ALL_PERMISSION_FLAGS = ALL_CHANNEL_PERMISSION_FLAGS |
		KICK_MEMBERS_PERMISSION_FLAG |
		BAN_MEMBERS_PERMISSION_FLAG |
		MANAGE_GUILD_PERMISSION_FLAG |
		ADMINISTRATOR_PERMISSION_FLAG |
		MANAGE_WEBHOOKS_PERMISSION_FLAG |
		MANAGE_GUILD_EXPRESSIONS_PERMISSION_FLAG |
		VIEW_CREATOR_MONETIZATION_ANALYTICS_PERMISSION_FLAG |
		VIEW_GUILD_INSIGHTS_PERMISSION_FLAG |
		VIEW_AUDIT_LOG_PERMISSION_FLAG |
		MANAGE_ROLES_PERMISSION_FLAG |
		CHANGE_NICKNAME_PERMISSION_FLAG |
		MANAGE_NICKNAMES_PERMISSION_FLAG |
		MODERATE_MEMBERS_PERMISSION_FLAG
)
