Add project files.

This commit is contained in:
2026-03-08 20:45:01 +01:00
commit 053a4052dd
45 changed files with 2578 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.Challenges;
public record class LolChallengesChallengeData
{
[JsonPropertyName("id")]
public long Id { get; init; }
[JsonPropertyName("category")]
public string? Category { get; init; }
[JsonPropertyName("legacy")]
public bool Legacy { get; init; }
[JsonPropertyName("percentile")]
public double Percentile { get; init; }
[JsonPropertyName("position")]
public int Position { get; init; }
[JsonPropertyName("playersInLevel")]
public int PlayersInLevel { get; init; }
[JsonPropertyName("initValue")]
public double InitValue { get; init; }
[JsonPropertyName("previousLevel")]
public string? PreviousLevel { get; init; }
[JsonPropertyName("previousValue")]
public double PreviousValue { get; init; }
[JsonPropertyName("previousThreshold")]
public double PreviousThreshold { get; init; }
[JsonPropertyName("newLevels")]
public string[]? NewLevels { get; init; }
[JsonPropertyName("currentLevel")]
public string? CurrentLevel { get; init; }
[JsonPropertyName("currentValue")]
public double CurrentValue { get; init; }
[JsonPropertyName("currentThreshold")]
public double CurrentThreshold { get; init; }
[JsonPropertyName("currentLevelAchievedTime")]
public long CurrentLevelAchievedTime { get; init; }
[JsonPropertyName("nextLevel")]
public string? NextLevel { get; init; }
[JsonPropertyName("nextThreshold")]
public double NextThreshold { get; init; }
[JsonPropertyName("friendsAtLevels")]
public LolChallengesFriendLevelsData[]? FriendsAtLevels { get; init; }
[JsonPropertyName("idListType")]
public string? IdListType { get; init; }
[JsonPropertyName("availableIds")]
public int[]? AvailableIds { get; init; }
[JsonPropertyName("completedIds")]
public int[]? CompletedIds { get; init; }
}

View File

@@ -0,0 +1,12 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.Challenges;
public record class LolChallengesFriendLevelsData
{
[JsonPropertyName("level")]
public string? Level { get; init; }
[JsonPropertyName("friends")]
public string[]? Friends { get; init; }
}

View File

@@ -0,0 +1,123 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.Challenges;
public record class LolChallengesUIChallenge
{
[JsonPropertyName("id")]
public long Id { get; init; }
[JsonPropertyName("name")]
public string? Name { get; init; }
[JsonPropertyName("description")]
public string? Description { get; init; }
[JsonPropertyName("descriptionShort")]
public string? DescriptionShort { get; init; }
[JsonPropertyName("iconPath")]
public string? IconPath { get; init; }
[JsonPropertyName("category")]
public string? Category { get; init; }
[JsonPropertyName("nextLevelIconPath")]
public string? NextLevelIconPath { get; init; }
[JsonPropertyName("currentLevel")]
public string? CurrentLevel { get; init; }
[JsonPropertyName("nextLevel")]
public string? NextLevel { get; init; }
[JsonPropertyName("previousLevel")]
public string? PreviousLevel { get; init; }
[JsonPropertyName("previousValue")]
public double PreviousValue { get; init; }
[JsonPropertyName("currentValue")]
public double CurrentValue { get; init; }
[JsonPropertyName("currentThreshold")]
public double CurrentThreshold { get; init; }
[JsonPropertyName("nextThreshold")]
public double NextThreshold { get; init; }
[JsonPropertyName("pointsAwarded")]
public long PointsAwarded { get; init; }
[JsonPropertyName("percentile")]
public double Percentile { get; init; }
[JsonPropertyName("currentLevelAchievedTime")]
public long CurrentLevelAchievedTime { get; init; }
[JsonPropertyName("position")]
public int Position { get; init; }
[JsonPropertyName("playersInLevel")]
public int PlayersInLevel { get; init; }
[JsonPropertyName("isApex")]
public bool IsApex { get; init; }
[JsonPropertyName("isCapstone")]
public bool IsCapstone { get; init; }
[JsonPropertyName("gameModes")]
public string[]? GameModes { get; init; }
[JsonPropertyName("friendsAtLevels")]
public LolChallengesFriendLevelsData[]? FriendsAtLevels { get; init; }
[JsonPropertyName("parentId")]
public long ParentId { get; init; }
[JsonPropertyName("parentName")]
public string? ParentName { get; init; }
[JsonPropertyName("childrenIds")]
public long[]? ChildrenIds { get; init; }
[JsonPropertyName("capstoneGroupId")]
public long CapstoneGroupId { get; init; }
[JsonPropertyName("capstoneGroupName")]
public string? CapstoneGroupName { get; init; }
[JsonPropertyName("source")]
public string? Source { get; init; }
[JsonPropertyName("thresholds")]
public object? Thresholds { get; init; }
[JsonPropertyName("levelToIconPath")]
public Dictionary<string, string>? LevelToIconPath { get; init; }
[JsonPropertyName("valueMapping")]
public string? ValueMapping { get; init; }
[JsonPropertyName("hasLeaderboard")]
public bool HasLeaderboard { get; init; }
[JsonPropertyName("isReverseDirection")]
public bool IsReverseDirection { get; init; }
[JsonPropertyName("priority")]
public double Priority { get; init; }
[JsonPropertyName("idListType")]
public string? IdListType { get; init; }
[JsonPropertyName("availableIds")]
public int[]? AvailableIds { get; init; }
[JsonPropertyName("completedIds")]
public int[]? CompletedIds { get; init; }
[JsonPropertyName("retireTimestamp")]
public long RetireTimestamp { get; init; }
}

View File

@@ -0,0 +1,12 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ChampSelect;
public record class BenchChampion
{
[JsonPropertyName("championId")]
public int ChampionId { get; init; }
[JsonPropertyName("isPriority")]
public bool IsPriority { get; init; }
}

View File

@@ -0,0 +1,15 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ChampSelect;
public record class ChampSelectBannedChampions
{
[JsonPropertyName("myTeamBans")]
public int[] MyTeamBans { get; init; } = [];
[JsonPropertyName("theirTeamBans")]
public int[] TheirTeamBans { get; init; } = [];
[JsonPropertyName("numBans")]
public int NumBans { get; init; }
}

View File

@@ -0,0 +1,15 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ChampSelect;
public record class ChampSelectChatRoomDetails
{
[JsonPropertyName("multiUserChatId")]
public string? MultiUserChatId { get; init; }
[JsonPropertyName("multiUserChatPassword")]
public string? MultiUserChatPassword { get; init; }
[JsonPropertyName("mucJwtDto")]
public MucJwtDto? MucJwtDto { get; init; }
}

View File

@@ -0,0 +1,75 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ChampSelect;
public record class ChampSelectPlayerSelection
{
[JsonPropertyName("cellId")]
public long CellId { get; init; }
[JsonPropertyName("championId")]
public int ChampionId { get; init; }
[JsonPropertyName("selectedSkinId")]
public int SelectedSkinId { get; init; }
[JsonPropertyName("wardSkinId")]
public long WardSkinId { get; init; }
[JsonPropertyName("spell1Id")]
public ulong Spell1Id { get; init; }
[JsonPropertyName("spell2Id")]
public ulong Spell2Id { get; init; }
[JsonPropertyName("team")]
public int Team { get; init; }
[JsonPropertyName("assignedPosition")]
public string? AssignedPosition { get; init; }
[JsonPropertyName("championPickIntent")]
public int ChampionPickIntent { get; init; }
[JsonPropertyName("playerType")]
public string? PlayerType { get; init; }
[JsonPropertyName("summonerId")]
public ulong SummonerId { get; init; }
[JsonPropertyName("gameName")]
public string? GameName { get; init; }
[JsonPropertyName("tagLine")]
public string? TagLine { get; init; }
[JsonPropertyName("puuid")]
public string? Puuid { get; init; }
[JsonPropertyName("isHumanoid")]
public bool IsHumanoid { get; init; }
[JsonPropertyName("nameVisibilityType")]
public string? NameVisibilityType { get; init; }
[JsonPropertyName("playerAlias")]
public string? PlayerAlias { get; init; }
[JsonPropertyName("obfuscatedSummonerId")]
public ulong ObfuscatedSummonerId { get; init; }
[JsonPropertyName("obfuscatedPuuid")]
public string? ObfuscatedPuuid { get; init; }
[JsonPropertyName("isAutofilled")]
public bool IsAutofilled { get; init; }
[JsonPropertyName("internalName")]
public string? InternalName { get; init; }
[JsonPropertyName("pickMode")]
public int PickMode { get; init; }
[JsonPropertyName("pickTurn")]
public int PickTurn { get; init; }
}

View File

@@ -0,0 +1,108 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ChampSelect;
public record class ChampSelectSession
{
[JsonPropertyName("id")]
public string? Id { get; init; }
[JsonPropertyName("gameId")]
public ulong GameId { get; init; }
[JsonPropertyName("queueId")]
public int QueueId { get; init; }
[JsonPropertyName("timer")]
public ChampSelectTimer? Timer { get; init; }
[JsonPropertyName("chatDetails")]
public ChampSelectChatRoomDetails? ChatDetails { get; init; }
[JsonPropertyName("myTeam")]
public ChampSelectPlayerSelection[] MyTeam { get; init; } = [];
[JsonPropertyName("theirTeam")]
public ChampSelectPlayerSelection[] TheirTeam { get; init; } = [];
[JsonPropertyName("trades")]
public ChampSelectSwapContract[] Trades { get; init; } = [];
[JsonPropertyName("pickOrderSwaps")]
public ChampSelectSwapContract[] PickOrderSwaps { get; init; } = [];
[JsonPropertyName("positionSwaps")]
public ChampSelectSwapContract[] PositionSwaps { get; init; } = [];
[JsonPropertyName("actions")]
public object[] Actions { get; init; } = [];
[JsonPropertyName("bans")]
public ChampSelectBannedChampions? Bans { get; init; }
[JsonPropertyName("localPlayerCellId")]
public long LocalPlayerCellId { get; init; }
[JsonPropertyName("isSpectating")]
public bool IsSpectating { get; init; }
[JsonPropertyName("allowSkinSelection")]
public bool AllowSkinSelection { get; init; }
[JsonPropertyName("allowSubsetChampionPicks")]
public bool AllowSubsetChampionPicks { get; init; }
[JsonPropertyName("allowDuplicatePicks")]
public bool AllowDuplicatePicks { get; init; }
[JsonPropertyName("allowPlayerPickSameChampion")]
public bool AllowPlayerPickSameChampion { get; init; }
[JsonPropertyName("disallowBanningTeammateHoveredChampions")]
public bool DisallowBanningTeammateHoveredChampions { get; init; }
[JsonPropertyName("allowBattleBoost")]
public bool AllowBattleBoost { get; init; }
[JsonPropertyName("boostableSkinCount")]
public int BoostableSkinCount { get; init; }
[JsonPropertyName("allowRerolling")]
public bool AllowRerolling { get; init; }
[JsonPropertyName("rerollsRemaining")]
public ulong RerollsRemaining { get; init; }
[JsonPropertyName("allowLockedEvents")]
public bool AllowLockedEvents { get; init; }
[JsonPropertyName("lockedEventIndex")]
public int LockedEventIndex { get; init; }
[JsonPropertyName("benchEnabled")]
public bool BenchEnabled { get; init; }
[JsonPropertyName("benchChampions")]
public BenchChampion[] BenchChampions { get; init; } = [];
[JsonPropertyName("counter")]
public long Counter { get; init; }
[JsonPropertyName("skipChampionSelect")]
public bool SkipChampionSelect { get; init; }
[JsonPropertyName("hasSimultaneousBans")]
public bool HasSimultaneousBans { get; init; }
[JsonPropertyName("hasSimultaneousPicks")]
public bool HasSimultaneousPicks { get; init; }
[JsonPropertyName("showQuitButton")]
public bool ShowQuitButton { get; init; }
[JsonPropertyName("isLegacyChampSelect")]
public bool IsLegacyChampSelect { get; init; }
[JsonPropertyName("isCustomGame")]
public bool IsCustomGame { get; init; }
}

View File

@@ -0,0 +1,15 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ChampSelect;
public record class ChampSelectSwapContract
{
[JsonPropertyName("id")]
public long Id { get; init; }
[JsonPropertyName("cellId")]
public long CellId { get; init; }
[JsonPropertyName("state")]
public ChampSelectSwapState State { get; init; }
}

View File

@@ -0,0 +1,16 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ChampSelect;
[JsonConverter(typeof(JsonStringEnumConverter))]
public enum ChampSelectSwapState
{
ACCEPTED,
CANCELLED,
DECLINED,
SENT,
RECEIVED,
INVALID,
BUSY,
AVAILABLE
}

View File

@@ -0,0 +1,21 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ChampSelect;
public record class ChampSelectTimer
{
[JsonPropertyName("adjustedTimeLeftInPhase")]
public long AdjustedTimeLeftInPhase { get; init; }
[JsonPropertyName("totalTimeInPhase")]
public long TotalTimeInPhase { get; init; }
[JsonPropertyName("phase")]
public string? Phase { get; init; }
[JsonPropertyName("isInfinite")]
public bool IsInfinite { get; init; }
[JsonPropertyName("internalNowInEpochMs")]
public ulong InternalNowInEpochMs { get; init; }
}

View File

@@ -0,0 +1,18 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ChampSelect;
public record class MucJwtDto
{
[JsonPropertyName("jwt")]
public string? Jwt { get; init; }
[JsonPropertyName("channelClaim")]
public string? ChannelClaim { get; init; }
[JsonPropertyName("domain")]
public string? Domain { get; init; }
[JsonPropertyName("targetRegion")]
public string? TargetRegion { get; init; }
}

View File

@@ -0,0 +1,19 @@
using System.Text.Json.Serialization;
using LeagueAPI.Models.DDragon.Champions;
namespace LeagueAPI.Models.DDragon;
public record class ChampionResponse
{
[JsonPropertyName("type")]
public string? Type { get; init; }
[JsonPropertyName("format")]
public string? Format { get; init; }
[JsonPropertyName("version")]
public string? Version { get; init; }
[JsonPropertyName("data")]
public Dictionary<string, ChampionData>? Data { get; init; }
}

View File

@@ -0,0 +1,42 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.DDragon.Champions;
public record ChampionData
{
[JsonPropertyName("version")]
public string? Version { get; init; }
[JsonPropertyName("id")]
public string? IdName { get; init; }
[JsonIgnore]
public int Id => Key?.ParseInt(-1) ?? -1;
[JsonPropertyName("key")]
public string? Key { get; init; }
[JsonPropertyName("name")]
public string? Name { get; init; }
[JsonPropertyName("title")]
public string? Title { get; init; }
[JsonPropertyName("blurb")]
public string? Blurb { get; init; }
[JsonPropertyName("info")]
public ChampionDataInfo? Info { get; init; }
[JsonPropertyName("image")]
public ChampionDataImage? Image { get; init; }
[JsonPropertyName("tags")]
public string[]? Tags { get; init; }
[JsonPropertyName("partype")]
public string? Partype { get; init; }
[JsonPropertyName("stats")]
public ChampionDataStats? Stats { get; init; }
}

View File

@@ -0,0 +1,27 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.DDragon.Champions;
public record ChampionDataImage
{
[JsonPropertyName("full")]
public string? Full { get; init; }
[JsonPropertyName("sprite")]
public string? Sprite { get; init; }
[JsonPropertyName("group")]
public string? Group { get; init; }
[JsonPropertyName("x")]
public int X { get; init; }
[JsonPropertyName("y")]
public int Y { get; init; }
[JsonPropertyName("w")]
public int W { get; init; }
[JsonPropertyName("h")]
public int H { get; init; }
}

View File

@@ -0,0 +1,18 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.DDragon.Champions;
public record ChampionDataInfo
{
[JsonPropertyName("attack")]
public int Attack { get; init; }
[JsonPropertyName("defense")]
public int Defense { get; init; }
[JsonPropertyName("magic")]
public int Magic { get; init; }
[JsonPropertyName("difficulty")]
public int Difficulty { get; init; }
}

View File

@@ -0,0 +1,66 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.DDragon.Champions;
public record ChampionDataStats
{
[JsonPropertyName("hp")]
public float Hp { get; init; }
[JsonPropertyName("hpperlevel")]
public float HpPerLevel { get; init; }
[JsonPropertyName("mp")]
public float Mp { get; init; }
[JsonPropertyName("mpperlevel")]
public float MpPerLevel { get; init; }
[JsonPropertyName("movespeed")]
public float Movespeed { get; init; }
[JsonPropertyName("armor")]
public float Armor { get; init; }
[JsonPropertyName("armorperlevel")]
public float ArmorPerLevel { get; init; }
[JsonPropertyName("spellblock")]
public float Spellblock { get; init; }
[JsonPropertyName("spellblockperlevel")]
public float SpellblockPerLevel { get; init; }
[JsonPropertyName("attackrange")]
public float AttackRange { get; init; }
[JsonPropertyName("hpregen")]
public float HpRegen { get; init; }
[JsonPropertyName("hpregenperlevel")]
public float HpRegenPerLevel { get; init; }
[JsonPropertyName("mpregen")]
public float MpRegen { get; init; }
[JsonPropertyName("mpregenperlevel")]
public float MpRegenPerLevel { get; init; }
[JsonPropertyName("crit")]
public float Crit { get; init; }
[JsonPropertyName("critperlevel")]
public float CritPerLevel { get; init; }
[JsonPropertyName("attackdamage")]
public float AttackDamage { get; init; }
[JsonPropertyName("attackdamageperlevel")]
public float AttackDamagePerLevel { get; init; }
[JsonPropertyName("attackspeedperlevel")]
public float AttackspeedPerLevel { get; init; }
[JsonPropertyName("attackspeed")]
public float Attackspeed { get; init; }
}

View File

@@ -0,0 +1,12 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ReadyCheck;
[JsonConverter(typeof(JsonStringEnumConverter))]
public enum LolMatchmakingMatchmakingDodgeWarning
{
ConnectionWarning,
Penalty,
Warning,
None,
}

View File

@@ -0,0 +1,24 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ReadyCheck;
public record class LolMatchmakingMatchmakingReadyCheckResource
{
[JsonPropertyName("state")]
public LolMatchmakingMatchmakingReadyCheckState State { get; init; }
[JsonPropertyName("playerResponse")]
public LolMatchmakingMatchmakingReadyCheckResponse PlayerResponse { get; init; }
[JsonPropertyName("dodgeWarning")]
public LolMatchmakingMatchmakingDodgeWarning DodgeWarning { get; init; }
[JsonPropertyName("timer")]
public float Timer { get; init; }
[JsonPropertyName("declinerIds")]
public ulong[]? DeclinerIds { get; init; }
[JsonPropertyName("suppressUx")]
public bool SuppressUx { get; init; }
}

View File

@@ -0,0 +1,11 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ReadyCheck;
[JsonConverter(typeof(JsonStringEnumConverter))]
public enum LolMatchmakingMatchmakingReadyCheckResponse
{
Declined,
Accepted,
None,
}

View File

@@ -0,0 +1,14 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ReadyCheck;
[JsonConverter(typeof(JsonStringEnumConverter))]
public enum LolMatchmakingMatchmakingReadyCheckState
{
Error,
PartyNotReady,
StrangerNotReady,
EveryoneReady,
InProgress,
Invalid,
}