import { Evt } from "../deps.ts";
import { Channel } from "./structures/Channel.ts"import { Guild } from "./structures/Guild.ts"import { GuildMember } from "./structures/GuildMember.ts"import { GuildEmoji } from "./structures/GuildEmoji.ts"import { ReactionCustomEmoji } from "./structures/ReactionCustomEmoji.ts"import { ReactionStandardEmoji } from "./structures/ReactionStandardEmoji.ts"import { Message } from "./structures/Message.ts"import { User } from "./structures/User.ts"import { Role } from "./structures/Role.ts"
export const ready = new Evt();
export const channelCreate: Evt<{channel: Channel}> = new Evt<{channel: Channel}>();
export const channelUpdate: Evt<{channel: Channel}> = new Evt<{channel: Channel}>();
export const channelDelete: Evt<{channel: Channel}> = new Evt<{channel: Channel}>();
export const channelPinsUpdate: Evt<{channel: Channel}> = new Evt<{channel: Channel}>();
export const guildCreate: Evt<{guild: Guild}> = new Evt<{guild: Guild}>();
export const guildDelete: Evt<{guild: Guild}> = new Evt<{guild: Guild}>();
export const guildBanAdd: Evt<{guild: Guild, user: User}> = new Evt<{guild: Guild, user: User}>();
export const guildBanRemove: Evt<{guild: Guild, user: User}> = new Evt<{guild: Guild, user: User}>();
export const guildEmojisUpdate: Evt<{guild: Guild, emojis: Array<GuildEmoji>}> = new Evt<{guild: Guild, emojis: Array<GuildEmoji>}>();
export const guildIntegrationsUpdate: Evt<{guild: Guild}> = new Evt<{guild: Guild}>();
export const guildMemberAdd: Evt<{guild: Guild, member: GuildMember}> = new Evt<{guild: Guild, member: GuildMember}>();
export const guildMemberRemove: Evt<{guild: Guild, member: GuildMember}> = new Evt<{guild: Guild, member: GuildMember}>();
export const guildMemberUpdate: Evt<{guild: Guild, member: GuildMember, oldMember: GuildMember}> = new Evt<{guild: Guild, member: GuildMember, oldMember: GuildMember}>();
export const guildRoleCreate: Evt<{guild: Guild, role: Role}> = new Evt<{guild: Guild, role: Role}>();
export const guildRoleUpdate: Evt<{guild: Guild, role: Role}> = new Evt<{guild: Guild, role: Role}>();
export const guildRoleDelete: Evt<{guild: Guild, role: Role}> = new Evt<{guild: Guild, role: Role}>();
export const messageCreate: Evt<{message: Message}> = new Evt<{message: Message}>();
export const messageUpdate: Evt<{message: Message}> = new Evt<{message: Message}>();
export const messageDelete: Evt<{messageID: string, channelID: string}> = new Evt<{messageID: string, channelID: string}>();
export const messageDeleteBulk: Evt<{messageIDs: Array<string>, channelID: string}> = new Evt<{messageIDs: Array<string>, channelID: string}>();
export const messageReactionAdd: Evt<{user: User, channel: Channel, emoji: ReactionStandardEmoji | ReactionCustomEmoji, messageID: string}> = new Evt<{user: User, channel: Channel, emoji: ReactionStandardEmoji | ReactionCustomEmoji, messageID: string}>();
export const messageReactionRemove: Evt<{user: User, channel: Channel, emoji: ReactionStandardEmoji | ReactionCustomEmoji, messageID: string}> = new Evt<{user: User, channel: Channel, emoji: ReactionStandardEmoji | ReactionCustomEmoji, messageID: string}>();
export const messageReactionRemoveAll: Evt<{channel: Channel, messageID: string}> = new Evt<{channel: Channel, messageID: string}>()
export const typingStart: Evt<{channel: Channel, userID: string, timestamp: number}> = new Evt<{channel: Channel, userID: string, timestamp: number}>()