# EDA v0.3.0 - Table of Contents

## Pages

- [EDA - Elixir Discord API](readme.md)
- [Changelog](changelog.md)
- [LICENSE](license.md)

## Modules

- [EDA.Application](EDA.Application.md): Main application supervisor for EDA.
- [EDA.AutoDelete](EDA.AutoDelete.md): Automatic message deletion scheduler.
- [EDA.Collector](EDA.Collector.md): Event collector for awaiting Discord gateway events.
- [EDA.Color](EDA.Color.md): Discord embed and component color utilities.
- [EDA.GuildTemplate.SourceGuild](EDA.GuildTemplate.SourceGuild.md): A serialized guild snapshot within a template.
- [EDA.Mention](EDA.Mention.md): Discord mention and timestamp formatting helpers.
- [EDA.OAuth2](EDA.OAuth2.md): OAuth2 helpers for Discord bot applications.

- Core
  - [EDA](EDA.md): EDA - Elixir Discord API
  - [EDA.Consumer](EDA.Consumer.md): Behaviour for handling Discord Gateway events.
  - [EDA.Error](EDA.Error.md): Discord JSON error codes with bidirectional lookup and named constants.
  - [EDA.Paginator](EDA.Paginator.md): Generic lazy pagination helper for Discord API endpoints.
  - [EDA.Permission](EDA.Permission.md): Discord permission flags and calculator.
  - [EDA.Snowflake](EDA.Snowflake.md): Utilities for extracting timestamps from Discord snowflake IDs.

- API
  - [EDA.API.AutoMod](EDA.API.AutoMod.md): REST API endpoints for Discord Auto Moderation rules.
  - [EDA.API.Ban](EDA.API.Ban.md): REST API endpoints for Discord guild bans.
  - [EDA.API.Channel](EDA.API.Channel.md): REST API endpoints for Discord channels.
  - [EDA.API.Command](EDA.API.Command.md): REST API endpoints for Discord application commands.
  - [EDA.API.Emoji](EDA.API.Emoji.md): REST API endpoints for Discord guild emojis.
  - [EDA.API.Entitlement](EDA.API.Entitlement.md): REST API endpoints for Discord Entitlements (monetization).
  - [EDA.API.Gateway](EDA.API.Gateway.md): REST API endpoint for Discord gateway info.

  - [EDA.API.Guild](EDA.API.Guild.md): REST API endpoints for Discord guilds.
  - [EDA.API.GuildTemplate](EDA.API.GuildTemplate.md): REST API endpoints for Discord guild templates.
  - [EDA.API.Interaction](EDA.API.Interaction.md): REST API endpoints for Discord interaction responses.
  - [EDA.API.Invite](EDA.API.Invite.md): REST API endpoints for Discord invites.
  - [EDA.API.Member](EDA.API.Member.md): REST API endpoints for Discord guild members.
  - [EDA.API.Message](EDA.API.Message.md): REST API endpoints for Discord messages.
  - [EDA.API.Poll](EDA.API.Poll.md): REST API endpoints for Discord message polls.
  - [EDA.API.Reaction](EDA.API.Reaction.md): REST API endpoints for Discord message reactions.
  - [EDA.API.Role](EDA.API.Role.md): REST API endpoints for Discord guild roles.
  - [EDA.API.SKU](EDA.API.SKU.md): REST API endpoints for Discord SKUs (monetization).
  - [EDA.API.ScheduledEvent](EDA.API.ScheduledEvent.md): REST API endpoints for Discord guild scheduled events.
  - [EDA.API.Stage](EDA.API.Stage.md): REST API endpoints for Discord stage instances.
  - [EDA.API.Sticker](EDA.API.Sticker.md): REST API endpoints for Discord stickers.
  - [EDA.API.Subscription](EDA.API.Subscription.md): REST API endpoints for Discord Subscriptions (monetization).
  - [EDA.API.Thread](EDA.API.Thread.md): REST API endpoints for Discord threads.
  - [EDA.API.User](EDA.API.User.md): REST API endpoints for Discord users.
  - [EDA.API.Webhook](EDA.API.Webhook.md): REST API endpoints for Discord webhooks.

- Cache
  - [EDA.Cache](EDA.Cache.md): Unified cache interface for EDA.
  - [EDA.Cache.Channel](EDA.Cache.Channel.md): ETS-based cache for Discord channels.
  - [EDA.Cache.Config](EDA.Cache.Config.md): Resolves cache configuration at startup and stores it in `:persistent_term` for O(1) access.
  - [EDA.Cache.Evictor](EDA.Cache.Evictor.md): Periodic LRW (Least Recently Written) evictor for caches with `max_size`.
  - [EDA.Cache.Guild](EDA.Cache.Guild.md): ETS-based cache for Discord guilds.
  - [EDA.Cache.Member](EDA.Cache.Member.md): ETS-based cache for Discord guild members.
  - [EDA.Cache.Policy](EDA.Cache.Policy.md): Cache admission policy behaviour and dispatcher.
  - [EDA.Cache.Presence](EDA.Cache.Presence.md): ETS-based cache for Discord presences.
  - [EDA.Cache.Role](EDA.Cache.Role.md): ETS-based cache for Discord roles.
  - [EDA.Cache.Supervisor](EDA.Cache.Supervisor.md): Supervisor for cache processes.
  - [EDA.Cache.User](EDA.Cache.User.md): ETS-based cache for Discord users.
  - [EDA.Cache.VoiceState](EDA.Cache.VoiceState.md): ETS-based cache for Discord voice states.

- Gateway
  - [EDA.Gateway.CloseCode](EDA.Gateway.CloseCode.md): Classifies Discord Gateway close codes into actionable categories.
  - [EDA.Gateway.Connection](EDA.Gateway.Connection.md): WebSocket connection to Discord Gateway.
  - [EDA.Gateway.Encoding](EDA.Gateway.Encoding.md): Behaviour for encoding/decoding Discord Gateway payloads.
  - [EDA.Gateway.Encoding.ETF](EDA.Gateway.Encoding.ETF.md): Erlang External Term Format encoding for Discord Gateway payloads.
  - [EDA.Gateway.Encoding.JSON](EDA.Gateway.Encoding.JSON.md): JSON encoding for Discord Gateway payloads via `Jason`.
  - [EDA.Gateway.Events](EDA.Gateway.Events.md): Handles dispatching Gateway events to consumers and updating caches.
  - [EDA.Gateway.Heartbeat](EDA.Gateway.Heartbeat.md): Manages heartbeat timing for the Gateway connection.
  - [EDA.Gateway.Intents](EDA.Gateway.Intents.md): Discord Gateway Intents.
  - [EDA.Gateway.MemberChunker](EDA.Gateway.MemberChunker.md): Orchestrates OP 8 (Request Guild Members) requests with nonce-based tracking.
  - [EDA.Gateway.ReadyTracker](EDA.Gateway.ReadyTracker.md): Tracks guild loading progress after READY to distinguish startup loads from runtime joins.
  - [EDA.Gateway.ShardManager](EDA.Gateway.ShardManager.md): Orchestrates the lifecycle of all gateway shards.
  - [EDA.Gateway.ShardSupervisor](EDA.Gateway.ShardSupervisor.md): Top-level supervisor for the Gateway sharding system.
  - [EDA.Gateway.Zlib](EDA.Gateway.Zlib.md): Zlib-stream decompressor for Discord gateway transport compression.

- Voice
  - [EDA.Voice](EDA.Voice.md): Public API for Discord voice support.
  - [EDA.Voice.Audio](EDA.Voice.Audio.md): Handles UDP socket management, IP discovery, audio encoding via FFmpeg,
and the player loop for sending opus frames over RTP.

  - [EDA.Voice.Crypto](EDA.Voice.Crypto.md): Encryption dispatch for Discord voice.
  - [EDA.Voice.Crypto.AES](EDA.Voice.Crypto.AES.md): AES-256-GCM encryption for Discord voice.
  - [EDA.Voice.Crypto.ChaCha](EDA.Voice.Crypto.ChaCha.md): XChaCha20-Poly1305 encryption for Discord voice.
  - [EDA.Voice.Dave.FrameCrypto](EDA.Voice.Dave.FrameCrypto.md): Per-frame AES-128-GCM encryption for the DAVE (Discord Audio Video E2EE) protocol.
  - [EDA.Voice.Dave.KeyStore](EDA.Voice.Dave.KeyStore.md): Stores per-sender encryption keys across MLS epochs for DAVE E2EE.
  - [EDA.Voice.Dave.Manager](EDA.Voice.Dave.Manager.md): Coordinates the DAVE (Discord Audio Video E2EE) protocol.
  - [EDA.Voice.Dave.Native](EDA.Voice.Dave.Native.md): NIF bindings for the DAVE (Discord Audio Video E2EE) MLS session.
  - [EDA.Voice.Event](EDA.Voice.Event.md): Handles Voice Gateway events received by `EDA.Voice.Session`.
  - [EDA.Voice.Ogg](EDA.Voice.Ogg.md): OGG page parser for extracting Opus frames from an OGG/Opus stream.
  - [EDA.Voice.Payload](EDA.Voice.Payload.md): Voice Gateway JSON payload builders (v8).
  - [EDA.Voice.Session](EDA.Voice.Session.md): WebSocket connection to a Discord Voice Gateway (one per guild).
  - [EDA.Voice.State](EDA.Voice.State.md): Holds per-guild voice connection state.

  - [EDA.Voice.Supervisor](EDA.Voice.Supervisor.md): Supervision tree for the voice subsystem.
  - [EDA.VoiceState](EDA.VoiceState.md): Represents a Discord voice state.

- Entities
  - [EDA.Activity](EDA.Activity.md): Represents a Discord presence activity.
  - [EDA.Attachment](EDA.Attachment.md): Represents a Discord message attachment.
  - [EDA.AuditLog](EDA.AuditLog.md): Audit log types, action type mappings, and pagination helpers.
  - [EDA.AuditLog.Change](EDA.AuditLog.Change.md): Represents a single change within an audit log entry.
  - [EDA.AuditLog.Entry](EDA.AuditLog.Entry.md): A single audit log entry.
  - [EDA.AutoMod](EDA.AutoMod.md): Represents a Discord Auto Moderation rule.
  - [EDA.AutoMod.Action](EDA.AutoMod.Action.md): Represents an action taken by an Auto Moderation rule.
  - [EDA.AutoMod.ActionMetadata](EDA.AutoMod.ActionMetadata.md): Metadata for an Auto Moderation action.
  - [EDA.AutoMod.TriggerMetadata](EDA.AutoMod.TriggerMetadata.md): Metadata for an Auto Moderation rule trigger.
  - [EDA.Channel](EDA.Channel.md): Represents a Discord channel.
  - [EDA.Command](EDA.Command.md): Builder for Discord Application Commands (slash commands, user commands, message commands).
  - [EDA.Command.Option](EDA.Command.Option.md): Builder for command option objects.
  - [EDA.Component](EDA.Component.md): Builder for Discord Components V2.
  - [EDA.Embed](EDA.Embed.md): Builder for Discord embed objects.
  - [EDA.Emoji](EDA.Emoji.md): Represents a Discord emoji (unicode or custom guild emoji).
  - [EDA.Entity](EDA.Entity.md): Shared behaviour for EDA entity modules that support fetch, modify, and changeset operations.
  - [EDA.Entity.Changeset](EDA.Entity.Changeset.md): Lightweight changeset for batching entity mutations into a single API call.
  - [EDA.File](EDA.File.md): Represents a file to upload to Discord.
  - [EDA.ForumTag](EDA.ForumTag.md): Represents a tag available in a Discord Forum or Media channel.
  - [EDA.Guild](EDA.Guild.md): Represents a Discord guild.
  - [EDA.GuildTemplate](EDA.GuildTemplate.md): Represents a Discord Guild Template.
  - [EDA.Interaction](EDA.Interaction.md): Helpers for working with Discord interactions.
  - [EDA.Invite](EDA.Invite.md): Represents a Discord invite.
  - [EDA.Member](EDA.Member.md): Represents a Discord guild member.
  - [EDA.Message](EDA.Message.md): Represents a Discord message.
  - [EDA.Modal](EDA.Modal.md): Builder for Discord Modal dialogs.
  - [EDA.PermissionOverwrite](EDA.PermissionOverwrite.md): Represents a Discord channel permission overwrite.
  - [EDA.Poll](EDA.Poll.md): Represents a Discord message poll.
  - [EDA.Poll.Answer](EDA.Poll.Answer.md): Represents a single answer option in a Discord poll.
  - [EDA.Poll.AnswerCount](EDA.Poll.AnswerCount.md): Represents the vote count for a specific poll answer.
  - [EDA.Presence](EDA.Presence.md): Presence and activity builder for Discord bots.
  - [EDA.Reaction](EDA.Reaction.md): Represents a Discord message reaction.
  - [EDA.Role](EDA.Role.md): Represents a Discord guild role.
  - [EDA.Sticker](EDA.Sticker.md): Represents a Discord sticker.
  - [EDA.Sticker.Pack](EDA.Sticker.Pack.md): Represents a Discord sticker pack (collection of standard Nitro stickers).
  - [EDA.User](EDA.User.md): Represents a Discord user.
  - [EDA.Webhook](EDA.Webhook.md): Represents a Discord webhook.

- Events
  - [EDA.Event](EDA.Event.md): Typed event structs for Discord Gateway events.
  - [EDA.Event.AllShardsReady](EDA.Event.AllShardsReady.md): Fired once when all shards have finished loading their guilds.
  - [EDA.Event.AutoModActionExecution](EDA.Event.AutoModActionExecution.md): Dispatched when an Auto Moderation rule action is executed.
  - [EDA.Event.AutoModRuleCreate](EDA.Event.AutoModRuleCreate.md): Dispatched when an Auto Moderation rule is created.
  - [EDA.Event.AutoModRuleDelete](EDA.Event.AutoModRuleDelete.md): Dispatched when an Auto Moderation rule is deleted.
  - [EDA.Event.AutoModRuleUpdate](EDA.Event.AutoModRuleUpdate.md): Dispatched when an Auto Moderation rule is updated.
  - [EDA.Event.ChannelCreate](EDA.Event.ChannelCreate.md): Dispatched when a channel is created.
  - [EDA.Event.ChannelDelete](EDA.Event.ChannelDelete.md): Dispatched when a channel is deleted.
  - [EDA.Event.ChannelPinsUpdate](EDA.Event.ChannelPinsUpdate.md): Dispatched when a channel's pins are updated.
  - [EDA.Event.ChannelUpdate](EDA.Event.ChannelUpdate.md): Dispatched when a channel is updated.
  - [EDA.Event.GatewayClose](EDA.Event.GatewayClose.md): Fired when a shard disconnects from the gateway.
  - [EDA.Event.GuildAuditLogEntryCreate](EDA.Event.GuildAuditLogEntryCreate.md): Dispatched when a guild audit log entry is created. Requires `GUILD_MODERATION` intent.
  - [EDA.Event.GuildBanAdd](EDA.Event.GuildBanAdd.md): Dispatched when a user is banned from a guild.
  - [EDA.Event.GuildBanRemove](EDA.Event.GuildBanRemove.md): Dispatched when a user is unbanned from a guild.
  - [EDA.Event.GuildCreate](EDA.Event.GuildCreate.md): Dispatched when a guild becomes available or the bot joins a guild.
  - [EDA.Event.GuildDelete](EDA.Event.GuildDelete.md): Dispatched when a guild becomes unavailable or the bot is removed.
  - [EDA.Event.GuildEmojisUpdate](EDA.Event.GuildEmojisUpdate.md): Dispatched when a guild's emojis are updated.
  - [EDA.Event.GuildMemberAdd](EDA.Event.GuildMemberAdd.md): Dispatched when a user joins a guild.
  - [EDA.Event.GuildMemberRemove](EDA.Event.GuildMemberRemove.md): Dispatched when a user is removed from a guild.
  - [EDA.Event.GuildMemberUpdate](EDA.Event.GuildMemberUpdate.md): Dispatched when a guild member is updated.
  - [EDA.Event.GuildMembersChunk](EDA.Event.GuildMembersChunk.md): Dispatched in response to a guild members request.
  - [EDA.Event.GuildRoleCreate](EDA.Event.GuildRoleCreate.md): Dispatched when a guild role is created.
  - [EDA.Event.GuildRoleDelete](EDA.Event.GuildRoleDelete.md): Dispatched when a guild role is deleted.
  - [EDA.Event.GuildRoleUpdate](EDA.Event.GuildRoleUpdate.md): Dispatched when a guild role is updated.
  - [EDA.Event.GuildScheduledEventCreate](EDA.Event.GuildScheduledEventCreate.md): Dispatched when a guild scheduled event is created.
  - [EDA.Event.GuildScheduledEventDelete](EDA.Event.GuildScheduledEventDelete.md): Dispatched when a guild scheduled event is deleted.
  - [EDA.Event.GuildScheduledEventUpdate](EDA.Event.GuildScheduledEventUpdate.md): Dispatched when a guild scheduled event is updated.
  - [EDA.Event.GuildScheduledEventUserAdd](EDA.Event.GuildScheduledEventUserAdd.md): Dispatched when a user subscribes to a guild scheduled event.
  - [EDA.Event.GuildScheduledEventUserRemove](EDA.Event.GuildScheduledEventUserRemove.md): Dispatched when a user unsubscribes from a guild scheduled event.
  - [EDA.Event.GuildStickersUpdate](EDA.Event.GuildStickersUpdate.md): Dispatched when a guild's stickers are updated.
  - [EDA.Event.GuildUpdate](EDA.Event.GuildUpdate.md): Dispatched when a guild is updated.
  - [EDA.Event.InteractionCreate](EDA.Event.InteractionCreate.md): Dispatched when a user uses an application command or component.
  - [EDA.Event.InviteCreate](EDA.Event.InviteCreate.md): Dispatched when a new invite is created.
  - [EDA.Event.InviteDelete](EDA.Event.InviteDelete.md): Dispatched when an invite is deleted.
  - [EDA.Event.MessageCreate](EDA.Event.MessageCreate.md): Dispatched when a message is created in a channel.
  - [EDA.Event.MessageDelete](EDA.Event.MessageDelete.md): Dispatched when a message is deleted.
  - [EDA.Event.MessageDeleteBulk](EDA.Event.MessageDeleteBulk.md): Dispatched when multiple messages are deleted at once.
  - [EDA.Event.MessagePollVoteAdd](EDA.Event.MessagePollVoteAdd.md): Dispatched when a user votes on a poll answer.
  - [EDA.Event.MessagePollVoteRemove](EDA.Event.MessagePollVoteRemove.md): Dispatched when a user removes their vote from a poll.
  - [EDA.Event.MessageReactionAdd](EDA.Event.MessageReactionAdd.md): Dispatched when a user adds a reaction to a message.
  - [EDA.Event.MessageReactionRemove](EDA.Event.MessageReactionRemove.md): Dispatched when a user removes a reaction from a message.
  - [EDA.Event.MessageReactionRemoveAll](EDA.Event.MessageReactionRemoveAll.md): Dispatched when all reactions are removed from a message.
  - [EDA.Event.MessageReactionRemoveEmoji](EDA.Event.MessageReactionRemoveEmoji.md): Dispatched when all reactions for a given emoji are removed from a message.
  - [EDA.Event.MessageUpdate](EDA.Event.MessageUpdate.md): Dispatched when a message is updated.
  - [EDA.Event.PresenceUpdate](EDA.Event.PresenceUpdate.md): Dispatched when a user's presence is updated.
  - [EDA.Event.RateLimited](EDA.Event.RateLimited.md): Dispatched when the app hits a gateway rate limit for an opcode.
  - [EDA.Event.Raw](EDA.Event.Raw.md): Fallback for unrecognized Discord events.
  - [EDA.Event.Ready](EDA.Event.Ready.md): Dispatched when the client has completed the initial handshake.
  - [EDA.Event.SessionResumed](EDA.Event.SessionResumed.md): Fired when a shard successfully resumes a previous session.
  - [EDA.Event.ShardReady](EDA.Event.ShardReady.md): Fired when a shard finishes loading all its guilds.
  - [EDA.Event.StageInstanceCreate](EDA.Event.StageInstanceCreate.md): Dispatched when a stage instance is created.
  - [EDA.Event.StageInstanceDelete](EDA.Event.StageInstanceDelete.md): Dispatched when a stage instance is deleted.
  - [EDA.Event.StageInstanceUpdate](EDA.Event.StageInstanceUpdate.md): Dispatched when a stage instance is updated.
  - [EDA.Event.ThreadCreate](EDA.Event.ThreadCreate.md): Dispatched when a thread is created.
  - [EDA.Event.ThreadDelete](EDA.Event.ThreadDelete.md): Dispatched when a thread is deleted.
  - [EDA.Event.ThreadListSync](EDA.Event.ThreadListSync.md): Dispatched when the current user gains access to a channel.
  - [EDA.Event.ThreadMemberUpdate](EDA.Event.ThreadMemberUpdate.md): Dispatched when the thread member object for the current user is updated.
  - [EDA.Event.ThreadMembersUpdate](EDA.Event.ThreadMembersUpdate.md): Dispatched when members are added or removed from a thread.
  - [EDA.Event.ThreadUpdate](EDA.Event.ThreadUpdate.md): Dispatched when a thread is updated.
  - [EDA.Event.TypingStart](EDA.Event.TypingStart.md): Dispatched when a user starts typing in a channel.
  - [EDA.Event.VoiceAudio](EDA.Event.VoiceAudio.md): Dispatched when voice audio data is received.
  - [EDA.Event.VoiceChannelStatusUpdate](EDA.Event.VoiceChannelStatusUpdate.md): Dispatched when a voice channel's status is set or cleared.
  - [EDA.Event.VoicePlaybackFinished](EDA.Event.VoicePlaybackFinished.md): Dispatched when voice playback finishes.
  - [EDA.Event.VoiceReady](EDA.Event.VoiceReady.md): Dispatched when the voice connection is ready.
  - [EDA.Event.VoiceServerUpdate](EDA.Event.VoiceServerUpdate.md): Dispatched when a guild's voice server is updated.
  - [EDA.Event.VoiceSpeakingStart](EDA.Event.VoiceSpeakingStart.md): Dispatched when a user starts speaking in voice.
  - [EDA.Event.VoiceSpeakingStop](EDA.Event.VoiceSpeakingStop.md): Dispatched when a user stops speaking in voice.
  - [EDA.Event.VoiceStateUpdate](EDA.Event.VoiceStateUpdate.md): Dispatched when a user's voice state changes.
  - [EDA.Event.WebhooksUpdate](EDA.Event.WebhooksUpdate.md): Dispatched when a guild channel's webhook is created, updated, or deleted.

- HTTP
  - [EDA.HTTP.Bucket](EDA.HTTP.Bucket.md): Computes rate limit bucket keys from HTTP method and path.
  - [EDA.HTTP.Multipart](EDA.HTTP.Multipart.md): Encodes multipart/form-data requests for Discord file uploads.
  - [EDA.HTTP.RateLimiter](EDA.HTTP.RateLimiter.md): Concurrent rate limiter for Discord REST API.

