// Path: app/src/main/java/ultimategdbot/config/UltimateGDBotConfig.java
// @ConfigEntry("ultimategdbot")
// @Value.Immutable
// @JsonDeserialize(as = ImmutableUltimateGDBotConfig.class)
// public interface UltimateGDBotConfig {
// 
//     @JsonProperty("pagination_max_entries")
//     int paginationMaxEntries();
// 
//     @JsonProperty("emoji_guild_ids")
//     Set<Long> emojiGuildIds();
// 
//     @JsonProperty("command_cooldown")
//     Optional<Limiter> commandCooldown();
// 
//     @JsonProperty("legacy_command_redirect_prefix")
//     Optional<String> legacyCommandRedirectPrefix();
// 
//     @Value.Default
//     @JsonProperty("command_permissions")
//     default List<CommandPermission> commandPermissions() {
//         return List.of();
//     }
// 
//     @Value.Default
//     @JsonProperty("bot_announcements_channel_ids")
//     default Set<Long> botAnnouncementsChannelIds() {
//         return Set.of();
//     }
// 
//     @Value.Immutable
//     @JsonDeserialize(as = ImmutableCommandPermission.class)
//     interface CommandPermission {
// 
//         String name();
// 
//         @JsonProperty("guild_id")
//         long guildId();
// 
//         @JsonProperty("role_id")
//         long roleId();
//     }
// 
//     GD gd();
// 
//     @Value.Immutable
//     @JsonDeserialize(as = ImmutableGD.class)
//     interface GD {
// 
//         Client client();
// 
//         Events events();
// 
//         @Value.Immutable
//         @JsonDeserialize(as = ImmutableClient.class)
//         interface Client {
// 
//             String username();
// 
//             String password();
// 
//             String host();
// 
//             @JsonProperty("cache_ttl_seconds")
//             int cacheTtlSeconds();
// 
//             @JsonProperty("request_timeout_seconds")
//             int requestTimeoutSeconds();
// 
//             @JsonProperty("request_limiter")
//             Optional<Limiter> requestLimiter();
//         }
// 
//         @Value.Immutable
//         @JsonDeserialize(as = ImmutableEvents.class)
//         interface Events {
// 
//             @JsonProperty("event_loop_interval_seconds")
//             int eventLoopIntervalSeconds();
// 
//             boolean crosspost();
// 
//             @JsonProperty("rates_channel_ids")
//             Set<Long> ratesChannelIds();
// 
//             @JsonProperty("demons_channel_ids")
//             Set<Long> demonsChannelIds();
// 
//             @JsonProperty("timely_channel_id")
//             Optional<Long> timelyChannelId();
// 
//             @JsonProperty("mods_channel_id")
//             Optional<Long> modsChannelId();
// 
//             @JsonProperty("public_random_messages")
//             RandomMessages publicRandomMessages();
// 
//             @JsonProperty("dm_random_messages")
//             RandomMessages dmRandomMessages();
// 
//             @Value.Immutable
//             @JsonDeserialize(as = ImmutableRandomMessages.class)
//             interface RandomMessages {
// 
//                 List<String> rates();
// 
//                 List<String> unrates();
// 
//                 List<String> daily();
// 
//                 List<String> weekly();
// 
//                 List<String> mod();
// 
//                 @JsonProperty("elder_mod")
//                 List<String> elderMod();
// 
//                 List<String> unmod();
// 
//                 @JsonProperty("elder_unmod")
//                 List<String> elderUnmod();
//             }
//         }
//     }
// 
//     @Value.Immutable
//     @JsonDeserialize(as = ImmutableLimiter.class)
//     interface Limiter {
// 
//         @Value.Default
//         default int limit() {
//             return 10;
//         }
// 
//         @Value.Default
//         @JsonProperty("interval_seconds")
//         default int intervalSeconds() {
//             return 60;
//         }
//     }
// }
// 
// Path: app/src/main/java/ultimategdbot/util/EmbedType.java
// public enum EmbedType {
//     USER_PROMOTED(tr -> tr.translate(Strings.GD, "gdevents_title_promoted"), "https://i.imgur.com/zY61GDD.png"),
//     USER_DEMOTED(tr -> tr.translate(Strings.GD, "gdevents_title_demoted"), "https://i.imgur.com/X53HV7d.png"),
//     USER_PROFILE(tr -> tr.translate(Strings.GD, "user_profile"), "https://i.imgur.com/ppg4HqJ.png"),
//     LEVEL_SEARCH_RESULT(tr -> tr.translate(Strings.GD, "search_result"), "https://i.imgur.com/a9B6LyS.png"),
//     DAILY_LEVEL(tr -> tr.translate(Strings.GD, "daily"), "https://i.imgur.com/enpYuB8.png"),
//     WEEKLY_DEMON(tr -> tr.translate(Strings.GD, "weekly"), "https://i.imgur.com/kcsP5SN.png"),
//     RATE(tr -> tr.translate(Strings.GD, "gdevents_title_rate"), "https://i.imgur.com/asoMj1W.png"),
//     UNRATE(tr -> tr.translate(Strings.GD, "gdevents_title_unrate"), "https://i.imgur.com/fPECXUz.png"),
//     MOD(tr -> tr.translate(Strings.GD, "gdevents_title_promoted"), "https://i.imgur.com/zY61GDD.png"),
//     UNMOD(tr -> tr.translate(Strings.GD, "gdevents_title_demoted"), "https://i.imgur.com/X53HV7d.png");
// 
//     private final Function<Translator, String> authorName;
//     private final String authorIconUrl;
// 
//     EmbedType(Function<Translator, String> authorName, String authorIconUrl) {
//         this.authorName = authorName;
//         this.authorIconUrl = authorIconUrl;
//     }
// 
//     public String getAuthorName(Translator tr) {
//         return authorName.apply(tr);
//     }
// 
//     public String getAuthorIconUrl() {
//         return authorIconUrl;
//     }
// }


import jdash.common.entity.GDUserProfile;
import org.immutables.value.Value;
import ultimategdbot.config.UltimateGDBotConfig;
import ultimategdbot.util.EmbedType;
import java.util.List;
package ultimategdbot.event;



@Value.Immutable
public interface ModStatusUpdate {

    @Value.Parameter
    GDUserProfile user();

    @Value.Parameter
// Path: app/src/main/java/ultimategdbot/config/UltimateGDBotConfig.java
// @ConfigEntry("ultimategdbot")
// @Value.Immutable
// @JsonDeserialize(as = ImmutableUltimateGDBotConfig.class)
// public interface UltimateGDBotConfig {
// 
//     @JsonProperty("pagination_max_entries")
//     int paginationMaxEntries();
// 
//     @JsonProperty("emoji_guild_ids")
//     Set<Long> emojiGuildIds();
// 
//     @JsonProperty("command_cooldown")
//     Optional<Limiter> commandCooldown();
// 
//     @JsonProperty("legacy_command_redirect_prefix")
//     Optional<String> legacyCommandRedirectPrefix();
// 
//     @Value.Default
//     @JsonProperty("command_permissions")
//     default List<CommandPermission> commandPermissions() {
//         return List.of();
//     }
// 
//     @Value.Default
//     @JsonProperty("bot_announcements_channel_ids")
//     default Set<Long> botAnnouncementsChannelIds() {
//         return Set.of();
//     }
// 
//     @Value.Immutable
//     @JsonDeserialize(as = ImmutableCommandPermission.class)
//     interface CommandPermission {
// 
//         String name();
// 
//         @JsonProperty("guild_id")
//         long guildId();
// 
//         @JsonProperty("role_id")
//         long roleId();
//     }
// 
//     GD gd();
// 
//     @Value.Immutable
//     @JsonDeserialize(as = ImmutableGD.class)
//     interface GD {
// 
//         Client client();
// 
//         Events events();
// 
//         @Value.Immutable
//         @JsonDeserialize(as = ImmutableClient.class)
//         interface Client {
// 
//             String username();
// 
//             String password();
// 
//             String host();
// 
//             @JsonProperty("cache_ttl_seconds")
//             int cacheTtlSeconds();
// 
//             @JsonProperty("request_timeout_seconds")
//             int requestTimeoutSeconds();
// 
//             @JsonProperty("request_limiter")
//             Optional<Limiter> requestLimiter();
//         }
// 
//         @Value.Immutable
//         @JsonDeserialize(as = ImmutableEvents.class)
//         interface Events {
// 
//             @JsonProperty("event_loop_interval_seconds")
//             int eventLoopIntervalSeconds();
// 
//             boolean crosspost();
// 
//             @JsonProperty("rates_channel_ids")
//             Set<Long> ratesChannelIds();
// 
//             @JsonProperty("demons_channel_ids")
//             Set<Long> demonsChannelIds();
// 
//             @JsonProperty("timely_channel_id")
//             Optional<Long> timelyChannelId();
// 
//             @JsonProperty("mods_channel_id")
//             Optional<Long> modsChannelId();
// 
//             @JsonProperty("public_random_messages")
//             RandomMessages publicRandomMessages();
// 
//             @JsonProperty("dm_random_messages")
//             RandomMessages dmRandomMessages();
// 
//             @Value.Immutable
//             @JsonDeserialize(as = ImmutableRandomMessages.class)
//             interface RandomMessages {
// 
//                 List<String> rates();
// 
//                 List<String> unrates();
// 
//                 List<String> daily();
// 
//                 List<String> weekly();
// 
//                 List<String> mod();
// 
//                 @JsonProperty("elder_mod")
//                 List<String> elderMod();
// 
//                 List<String> unmod();
// 
//                 @JsonProperty("elder_unmod")
//                 List<String> elderUnmod();
//             }
//         }
//     }
// 
//     @Value.Immutable
//     @JsonDeserialize(as = ImmutableLimiter.class)
//     interface Limiter {
// 
//         @Value.Default
//         default int limit() {
//             return 10;
//         }
// 
//         @Value.Default
//         @JsonProperty("interval_seconds")
//         default int intervalSeconds() {
//             return 60;
//         }
//     }
// }
// 
// Path: app/src/main/java/ultimategdbot/util/EmbedType.java
// public enum EmbedType {
//     USER_PROMOTED(tr -> tr.translate(Strings.GD, "gdevents_title_promoted"), "https://i.imgur.com/zY61GDD.png"),
//     USER_DEMOTED(tr -> tr.translate(Strings.GD, "gdevents_title_demoted"), "https://i.imgur.com/X53HV7d.png"),
//     USER_PROFILE(tr -> tr.translate(Strings.GD, "user_profile"), "https://i.imgur.com/ppg4HqJ.png"),
//     LEVEL_SEARCH_RESULT(tr -> tr.translate(Strings.GD, "search_result"), "https://i.imgur.com/a9B6LyS.png"),
//     DAILY_LEVEL(tr -> tr.translate(Strings.GD, "daily"), "https://i.imgur.com/enpYuB8.png"),
//     WEEKLY_DEMON(tr -> tr.translate(Strings.GD, "weekly"), "https://i.imgur.com/kcsP5SN.png"),
//     RATE(tr -> tr.translate(Strings.GD, "gdevents_title_rate"), "https://i.imgur.com/asoMj1W.png"),
//     UNRATE(tr -> tr.translate(Strings.GD, "gdevents_title_unrate"), "https://i.imgur.com/fPECXUz.png"),
//     MOD(tr -> tr.translate(Strings.GD, "gdevents_title_promoted"), "https://i.imgur.com/zY61GDD.png"),
//     UNMOD(tr -> tr.translate(Strings.GD, "gdevents_title_demoted"), "https://i.imgur.com/X53HV7d.png");
// 
//     private final Function<Translator, String> authorName;
//     private final String authorIconUrl;
// 
//     EmbedType(Function<Translator, String> authorName, String authorIconUrl) {
//         this.authorName = authorName;
//         this.authorIconUrl = authorIconUrl;
//     }
// 
//     public String getAuthorName(Translator tr) {
//         return authorName.apply(tr);
//     }
// 
//     public String getAuthorIconUrl() {
//         return authorIconUrl;
//     }
// }


// Path: app/src/main/java/ultimategdbot/event/ModStatusUpdate.java
import jdash.common.entity.GDUserProfile;
import org.immutables.value.Value;
import ultimategdbot.config.UltimateGDBotConfig;
import ultimategdbot.util.EmbedType;
import java.util.List;

package ultimategdbot.event;



@Value.Immutable
public interface ModStatusUpdate {

    @Value.Parameter
    GDUserProfile user();

    @Value.Parameter
    Type type();