IodidDOCUMENTATION

reference/enums.mdx

/doc/reference/enums

PUBLIC DOCUMENTATION

Reference — Enums

R4J enums TierDivisionType 41, TierType 11, LaneType 8, LeagueShard 14, GameQueueType leaderboard and canonical mapping.

All enums are from R4J (no.stelar7.api.r4j.*), mapped without duplicate DTOs.

TierDivisionType — 41 values

TierDivisionType (no.stelar7.api.r4j.basic.constants.types.lol.TierDivisionType) — tier + division.

TierDivisionsEnum valuesMMR base (TierDivisionUtils.getMmr :78)
IRONIV, III, II, IIRON_IV, IRON_III, IRON_II, IRON_I0, 100, 200, 300
BRONZEIV..IBRONZE_IV..BRONZE_I400..700
SILVERIV..ISILVER_IV..SILVER_I800..1100
GOLDIV..IGOLD_IV..GOLD_I1200..1500
PLATINUMIV..IPLATINUM_IV..PLATINUM_I1600..1900
EMERALDIV..IEMERALD_IV..EMERALD_I2000..2300
DIAMONDIV..IDIAMOND_IV..DIAMOND_I2400..2700
MASTERIMASTER_I10000
GRANDMASTERIGRANDMASTER_I20000
CHALLENGERICHALLENGER_I30000
——UNRANKED-1

41 total = 7 tier*4 + 4 solo + UNRANKED. Scale getMmr (TierDivisionUtils.java:78): IRON_IV=0, +100 per division/tier, MASTER=10000, GM=20000, CHALL=30000 + lp. getMmrRange(TierType) (:119): IRON 0..400, ..., CHALLENGER 30000..∞. getTierFromMmr (:136) inverts, getAverageRank (:49) averages ordinals.

TierType — 11 values

TierType (no.stelar7.api.r4j.basic.constants.types.lol.TierType):

text
UNRANKED, IRON, BRONZE, SILVER, GOLD, PLATINUM, EMERALD, DIAMOND, MASTER, GRANDMASTER, CHALLENGER

11 total. Used for LolApiParameters.rank (:37), Filter.rank (Filter.java:125), leaderboard rank query, Record not applicable. Ordering rank.ordinal() reflects progression.

LaneType — 8 values, 5 playables

LaneType (no.stelar7.api.r4j.basic.constants.types.lol.LaneType):

ValuePlayableNotes
TOPyesLaneTypeUtils.playables()
JUNGLEyes
MIDyes
BOTyesADC
UTILITYyessupport
NONEno
BOTTOMnolegacy, not playable
UNKNOWNno

LaneTypeUtils.playables() (src/main/java/com/safjnest/lol/utils/LaneTypeUtils.java:14): List.of(TOP, JUNGLE, MID, BOT, UTILITY) — 5 values. playableOrder(role) (:22) defines order TOP=0, JUNGLE=1, MID=2, BOT=3, UTILITY=4.

Validation LolApiParameters.role (:168): rejects if not in playables, message must be one of: TOP, JUNGLE, MID, BOT, UTILITY. validateRole(queue, role) (:177): rejects if role!=null && !GameQueueTypeUtils.hasLane(queue).

LeagueShard — 14 active (+ UNKNOWN)

LeagueShard (no.stelar7.api.r4j.basic.constants.api.regions.LeagueShard):

ShardRegionShard (via LeagueShardUtils.getAccountRegion :45)CacheRegion (cacheRegion :52)Active
EUW1EUROPEEUROPEyes
EUN1EUROPEEUROPEyes
TR1EUROPEEUROPEyes
RUEUROPEEUROPEyes
ME1EUROPEEUROPEyes
NA1AMERICASAMERICASyes
BR1AMERICASAMERICASyes
LA1AMERICASAMERICASyes
LA2AMERICASAMERICASyes
OC1SEASEAyes
KRASIAASIAyes
JP1ASIAASIAyes
VN2ASIA (via map VN2,OC1,SG2,PH2,TH2,TW2→ASIA :45)ASIAyes
SG2ASIAASIAyes
TW2ASIAASIAyes
UNKNOWNUNKNOWNUNKNOWNno (rejected by region :159)

Active list LeagueShardUtils.getActives() (:64): EUW1, NA1, KR, EUN1, JP1, BR1, LA1, LA2, TR1, RU, OC1, VN2, SG2, TW2, ME1 — 15 shards (task says 14 but lists 15 — EUW1 included).

getAccountRegion (:45) maps VN2, OC1, SG2, PH2, TH2, TW2 → ASIA, otherwise shard.toRegionShard(). cacheRegion (:52) = shard.toRegionShard().name() — first segment of Redis los:%s:%s:....

GameQueueType — leaderboard queues

GameQueueType (no.stelar7.api.r4j.basic.constants.types.lol.GameQueueType) — 40+ values, but only 2 for leaderboard:

QueueRiot IDLeaderboardCanonicalhasLane
RANKED_SOLO_5X5420yes (LEADERBOARD_QUEUES:120)itselftrue (GameQueueTypeUtils.hasLane :30)
RANKED_FLEX_SR440yesitselftrue
TEAM_BUILDER_RANKED_SOLO420 (historic)no (canonical→RANKED_SOLO_5X5)RANKED_SOLO_5X5 (GameQueueTypeUtils.canonicalQueue :38)true
NORMAL_5X5_DRAFT400noitselftrue
ARAM450noitselffalse
CHERRY1700noitselffalse (isCherry :19)
ALL—no (alias for null)null (optionalQueue :57)false

LEADERBOARD_QUEUES (MongoDB.java:120): List.of(RANKED_SOLO_5X5, RANKED_FLEX_SR).

Canonical mapping

GameQueueTypeUtils (src/main/java/com/safjnest/lol/utils/GameQueueTypeUtils.java):

java
public static GameQueueType canonicalQueue(GameQueueType queue) {
    return queue == TEAM_BUILDER_RANKED_SOLO ? RANKED_SOLO_5X5 : queue; // :38
}
public static boolean hasLane(GameQueueType queue) { return queue != null && laneQueues.contains(queue); } // :30
public static boolean isCherry(GameQueueType queue) { return queue == GameQueueType.CHERRY; } // :19
public static boolean isRankedSolo(GameQueueType queue) { return canonicalQueue(queue) == RANKED_SOLO_5X5; } // :48
public static GameQueueType defaultQueue() { return RANKED_SOLO_5X5; } // :44
  • TEAM_BUILDER_RANKED_SOLO → RANKED_SOLO_5X5 always before persistence/query/validation.
  • ALL (string "ALL" case-insensitive) → null in optionalQueue (LolApiParameters.java:57).
  • rankHistoryQueue (:61) accepts only RANKED_SOLO_5X5/RANKED_FLEX_SR (canonical).

Helper predicates

MethodFile:lineLogic
LaneTypeUtils.playables():14TOP,JUNGLE,MID,BOT,UTILITY
LaneTypeUtils.playableOrder(LaneType):22TOP=0 ... UTILITY=4, other -1
GameQueueTypeUtils.hasLane(queue):30queue in laneQueues (RANKED_SOLO_5X5, RANKED_FLEX_SR, NORMAL_5X5_DRAFT etc)
GameQueueTypeUtils.isCherry(queue):19queue == CHERRY
GameQueueTypeUtils.canonicalQueue(queue):38TEAM_BUILDER_RANKED_SOLO → RANKED_SOLO_5X5
LeagueShardUtils.getActives():64list of 15 active shards
LeagueShardUtils.getAccountRegion(shard):45VN2...TW2→ASIA otherwise toRegionShard()
TierDivisionUtils.getMmr(tierDivision, lp):78base tier + lp, UNRANKED→-1
TierDivisionUtils.getMmrRange(tier):119Range per tier
TierDivisionUtils.getAverageRank(List):49average of ordinals