diff --git a/.github/workflows/schema-drift.yml b/.github/workflows/schema-drift.yml index d6f8fc7..4637603 100644 --- a/.github/workflows/schema-drift.yml +++ b/.github/workflows/schema-drift.yml @@ -15,6 +15,8 @@ jobs: steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 + with: + version: 10.11.0 - uses: actions/setup-node@v4 with: node-version: '22' diff --git a/packages/whisper/src/types/generated/lol.ts b/packages/whisper/src/types/generated/lol.ts index a205155..5c21a50 100644 --- a/packages/whisper/src/types/generated/lol.ts +++ b/packages/whisper/src/types/generated/lol.ts @@ -1,36 +1,20 @@ // Auto-generated by generate-schema. Do not edit. -/** A champion banned during champion select. */ export interface BannedChampion { - /** Champion ID of the banned champion. */ championId: number; - /** Turn in the ban phase when this champion was banned. */ pickTurn: number; - /** Team ID that made this ban (100 = blue, 200 = red). */ teamId: number; } -/** Configuration data for a single LoL challenge. */ export interface ChallengeConfigInfo { - /** Unique numeric identifier for the challenge. */ id: number; - /** Whether this challenge has a public leaderboard. */ leaderboard: boolean; - /** Localized names and descriptions keyed by locale code. */ localizedNames: { ar_AE: { description: string; name: string; shortDescription: string }; cs_CZ: { description: string; name: string; shortDescription: string }; de_DE: { description: string; name: string; shortDescription: string }; el_GR: { description: string; name: string; shortDescription: string }; en_AU: { description: string; name: string; shortDescription: string }; en_GB: { description: string; name: string; shortDescription: string }; en_PH: { description: string; name: string; shortDescription: string }; en_SG: { description: string; name: string; shortDescription: string }; en_US: { description: string; name: string; shortDescription: string }; es_AR: { description: string; name: string; shortDescription: string }; es_ES: { description: string; name: string; shortDescription: string }; es_MX: { description: string; name: string; shortDescription: string }; fr_FR: { description: string; name: string; shortDescription: string }; hu_HU: { description: string; name: string; shortDescription: string }; id_ID: { description: string; name: string; shortDescription: string }; it_IT: { description: string; name: string; shortDescription: string }; ja_JP: { description: string; name: string; shortDescription: string }; ko_KR: { description: string; name: string; shortDescription: string }; pl_PL: { description: string; name: string; shortDescription: string }; pt_BR: { description: string; name: string; shortDescription: string }; ro_RO: { description: string; name: string; shortDescription: string }; ru_RU: { description: string; name: string; shortDescription: string }; th_TH: { description: string; name: string; shortDescription: string }; tr_TR: { description: string; name: string; shortDescription: string }; vi_VN: { description: string; name: string; shortDescription: string }; zh_CN: { description: string; name: string; shortDescription: string }; zh_MY: { description: string; name: string; shortDescription: string }; zh_TW: { description: string; name: string; shortDescription: string } }; - /** Current state of the challenge (e.g., "ENABLED", "DISABLED", "ARCHIVED"). */ state: string; - /** Point thresholds required for each tier level. CHALLENGER and GRANDMASTER may be absent for some challenges. */ thresholds: { BRONZE: number; CHALLENGER?: number; DIAMOND: number; GOLD: number; GRANDMASTER?: number; IRON: number; MASTER: number; PLATINUM: number; SILVER: number }; } -/** - * Percentile breakdowns for all challenges, keyed by numeric challenge ID. - * - * Each key is a challenge ID mapping to an object of tier-level percentile values - * (0.0 to 1.0). Use bracket notation to access: `percentiles[challengeId]`. - */ export interface ChallengePercentiles { 0: { BRONZE: number; CHALLENGER: number; DIAMOND: number; GOLD: number; GRANDMASTER: number; IRON: number; MASTER: number; PLATINUM: number; SILVER: number }; 1: { BRONZE: number; CHALLENGER: number; DIAMOND: number; GOLD: number; GRANDMASTER: number; IRON: number; MASTER: number; PLATINUM: number; SILVER: number }; @@ -439,208 +423,119 @@ export interface ChallengePercentiles { 603010: { BRONZE: number; CHALLENGER: number; DIAMOND: number; GOLD: number; GRANDMASTER: number; IRON: number; MASTER: number; PLATINUM: number; SILVER: number }; } -/** Current free champion rotation data. */ export interface ChampionInfo { - /** Champion IDs in the current free rotation. */ freeChampionIds: number[]; - /** Champion IDs in the free rotation for new players (below maxNewPlayerLevel). */ freeChampionIdsForNewPlayers: number[]; - /** Maximum summoner level for the new player free rotation. */ maxNewPlayerLevel: number; } -/** Champion mastery data for a single champion on a summoner's account. */ export interface ChampionMastery { - /** Champion ID. */ championId: number; - /** Mastery level for this champion (1-7+). */ championLevel: number; - /** Total mastery points earned on this champion. */ championPoints: number; - /** Points earned since the last mastery level-up. */ championPointsSinceLastLevel: number; - /** Points needed to reach the next mastery level. 0 if at max level. */ championPointsUntilNextLevel: number; - /** Current season milestone achieved for this champion. */ championSeasonMilestone: number; - /** Last time this champion was played, as epoch milliseconds. */ lastPlayTime: number; - /** Number of marks required for the next mastery level. */ markRequiredForNextLevel: number; - /** Grades achieved for milestone progress. */ - milestoneGrades?: unknown[]; - /** Requirements and rewards for the next season milestone. */ - nextSeasonMilestone: { bonus: boolean; requireGradeCounts: { 'A-'?: number; 'S-'?: number }; rewardMarks: number; totalGamesRequires: number }; - /** Player Universally Unique Identifier (PUUID). */ + milestoneGrades: string[]; + nextSeasonMilestone: { bonus: boolean; requireGradeCounts: { S-: number }; rewardMarks: number; totalGamesRequires: number }; puuid: string; - /** Number of mastery tokens earned toward the next level. */ tokensEarned: number; } -/** A participant in a live (current) game. */ export interface CurrentGameParticipant { - /** Whether this participant is a bot. */ bot: boolean; - /** Champion ID selected by this participant. */ championId: number; - /** Game customization objects (e.g., ward skins). */ gameCustomizationObjects: ({ category: string; content: string })[]; - /** Rune (perk) configuration for this participant. */ perks: { perkIds: number[]; perkStyle: number; perkSubStyle: number }; - /** Profile icon ID. */ profileIconId: number; - /** Player Universally Unique Identifier (PUUID). */ puuid: string; - /** First summoner spell ID (e.g., Flash). */ spell1Id: number; - /** Second summoner spell ID (e.g., Ignite). */ spell2Id: number; - /** Team ID (100 = blue, 200 = red). */ teamId: number; } -/** A game customization entry (e.g., ward skin, emote). */ export interface GameCustomizationObject { - /** Customization category identifier. */ category: string; - /** Customization content value. */ content: string; } -/** Live (in-progress) game information from the spectator API. */ export interface LolCurrentGameInfo { - /** Champions banned during champion select. */ bannedChampions: ({ championId: number; pickTurn: number; teamId: number })[]; - /** Game ID. */ gameId: number; - /** Current length of the game in seconds. */ gameLength: number; - /** Game mode (e.g., "CLASSIC", "ARAM"). */ gameMode: 'CLASSIC' | 'ODIN' | 'ARAM' | 'TUTORIAL' | 'URF' | 'DOOMBOTSTEEMO' | 'ONEFORALL' | 'ASCENSION' | 'FIRSTBLOOD' | 'KINGPORO' | 'SIEGE' | 'ASSASSINATE' | 'ARSR' | 'DARKSTAR' | 'STARGUARDIAN' | 'PROJECT' | 'GAMEMODEX' | 'NEXUSBLITZ' | 'ULTBOOK' | 'CHERRY' | 'STRAWBERRY'; - /** Queue configuration ID. */ gameQueueConfigId: number; - /** Unix timestamp (milliseconds) when the game started. */ gameStartTime: number; - /** Game type (e.g., "MATCHED_GAME", "CUSTOM_GAME"). */ gameType: 'CUSTOM_GAME' | 'MATCHED_GAME' | 'TUTORIAL_GAME'; - /** Map ID (e.g., 11 = Summoner's Rift, 12 = Howling Abyss). */ mapId: number; - /** Observer encryption key for spectating. */ observers: { encryptionKey: string }; - /** List of participants in this game. */ participants: ({ bot: boolean; championId: number; gameCustomizationObjects: ({ category: string; content: string })[]; perks: { perkIds: number[]; perkStyle: number; perkSubStyle: number }; profileIconId: number; puuid: string; spell1Id: number; spell2Id: number; teamId: number })[]; - /** Platform ID where this game is being played (e.g., "NA1"). */ platformId: string; } -/** A ranked league entry for a single summoner in a specific queue. */ export interface LolLeagueEntry { - /** Whether this player recently joined this tier. */ freshBlood: boolean; - /** Whether this player is currently on a winning streak. */ hotStreak: boolean; - /** Whether this player is inactive (decaying). */ inactive: boolean; - /** Unique identifier for the league this entry belongs to. */ leagueId: string; - /** Current league points (LP). */ leaguePoints: number; - /** Total ranked losses this season. */ losses: number; - /** Player Universally Unique Identifier (PUUID). */ puuid: string; - /** Ranked queue type. */ queueType: 'RANKED_SOLO_5x5' | 'RANKED_FLEX_SR' | 'RANKED_FLEX_TT' | 'RANKED_TFT' | 'RANKED_TFT_TURBO' | 'RANKED_TFT_DOUBLE_UP' | 'RANKED_TFT_PAIRS'; - /** Division rank within the tier (I = highest, IV = lowest). */ rank: 'I' | 'II' | 'III' | 'IV'; - /** Ranked tier (e.g., "GOLD", "DIAMOND", "CHALLENGER"). */ tier: 'IRON' | 'BRONZE' | 'SILVER' | 'GOLD' | 'PLATINUM' | 'EMERALD' | 'DIAMOND' | 'MASTER' | 'GRANDMASTER' | 'CHALLENGER'; - /** Whether this player has played over 100 games in this queue. */ veteran: boolean; - /** Total ranked wins this season. */ wins: number; } -/** Full match data including game info, participants, and teams. */ export interface LolMatch { - /** Detailed match information including participants, game settings, and results. */ - info: { endOfGameResult: string; gameCreation: number; gameDuration: number; gameEndTimestamp: number; gameId: number; gameMode: 'CLASSIC' | 'ODIN' | 'ARAM' | 'TUTORIAL' | 'URF' | 'DOOMBOTSTEEMO' | 'ONEFORALL' | 'ASCENSION' | 'FIRSTBLOOD' | 'KINGPORO' | 'SIEGE' | 'ASSASSINATE' | 'ARSR' | 'DARKSTAR' | 'STARGUARDIAN' | 'PROJECT' | 'GAMEMODEX' | 'NEXUSBLITZ' | 'ULTBOOK' | 'CHERRY' | 'STRAWBERRY'; gameName: string; gameStartTimestamp: number; gameType: 'CUSTOM_GAME' | 'MATCHED_GAME' | 'TUTORIAL_GAME'; gameVersion: string; mapId: number; participants: ({ PlayerBehavior: { PlayerBehavior_IsHeroInCombat: number }; PlayerScore0: number; PlayerScore1: number; PlayerScore10: number; PlayerScore11: number; PlayerScore2: number; PlayerScore3: number; PlayerScore4: number; PlayerScore5: number; PlayerScore6: number; PlayerScore7: number; PlayerScore8: number; PlayerScore9: number; allInPings: number; assistMePings: number; assists: number; baronKills: number; basicPings: number; challenges: { '12AssistStreakCount': number; HealFromMapSources: number; InfernalScalePickup: number; SWARM_DefeatAatrox: number; SWARM_DefeatBriar: number; SWARM_DefeatMiniBosses: number; SWARM_EvolveWeapon: number; SWARM_Have3Passives: number; SWARM_KillEnemy: number; SWARM_PickupGold: number; SWARM_ReachLevel50: number; SWARM_Survive15Min: number; SWARM_WinWith5EvolvedWeapons: number; abilityUses: number; acesBefore15Minutes: number; alliedJungleMonsterKills: number; baronTakedowns: number; blastConeOppositeOpponentCount: number; bountyGold: number; buffsStolen: number; completeSupportQuestInTime: number; controlWardTimeCoverageInRiverOrEnemyHalf?: number; controlWardsPlaced: number; damagePerMinute: number; damageTakenOnTeamPercentage: number; dancedWithRiftHerald: number; deathsByEnemyChamps: number; dodgeSkillShotsSmallWindow: number; doubleAces: number; dragonTakedowns: number; earliestDragonTakedown: number; earlyLaningPhaseGoldExpAdvantage: number; effectiveHealAndShielding: number; elderDragonKillsWithOpposingSoul: number; elderDragonMultikills: number; enemyChampionImmobilizations: number; enemyJungleMonsterKills: number; epicMonsterKillsNearEnemyJungler: number; epicMonsterKillsWithin30SecondsOfSpawn: number; epicMonsterSteals: number; epicMonsterStolenWithoutSmite: number; firstTurretKilled: number; fistBumpParticipation: number; flawlessAces: number; fullTeamTakedown: number; gameLength: number; getTakedownsInAllLanesEarlyJungleAsLaner?: number; goldPerMinute: number; hadOpenNexus: number; highestCrowdControlScore?: number; immobilizeAndKillWithAlly: number; initialBuffCount: number; initialCrabCount: number; jungleCsBefore10Minutes: number; junglerKillsEarlyJungle?: number; junglerTakedownsNearDamagedEpicMonster: number; kTurretsDestroyedBeforePlatesFall: number; kda: number; killAfterHiddenWithAlly: number; killParticipation: number; killedChampTookFullTeamDamageSurvived: number; killingSprees: number; killsNearEnemyTurret: number; killsOnLanersEarlyJungleAsJungler?: number; killsOnOtherLanesEarlyJungleAsLaner?: number; killsOnRecentlyHealedByAramPack: number; killsUnderOwnTurret: number; killsWithHelpFromEpicMonster: number; knockEnemyIntoTeamAndKill: number; landSkillShotsEarlyGame: number; laneMinionsFirst10Minutes: number; laningPhaseGoldExpAdvantage: number; legendaryCount: number; legendaryItemUsed: number[]; lostAnInhibitor: number; maxCsAdvantageOnLaneOpponent: number; maxKillDeficit: number; maxLevelLeadLaneOpponent: number; mejaisFullStackInTime: number; moreEnemyJungleThanOpponent: number; multiKillOneSpell: number; multiTurretRiftHeraldCount: number; multikills: number; multikillsAfterAggressiveFlash: number; outerTurretExecutesBefore10Minutes: number; outnumberedKills: number; outnumberedNexusKill: number; perfectDragonSoulsTaken: number; perfectGame: number; pickKillWithAlly: number; playedChampSelectPosition: number; poroExplosions: number; quickCleanse: number; quickFirstTurret: number; quickSoloKills: number; riftHeraldTakedowns: number; saveAllyFromDeath: number; scuttleCrabKills: number; skillshotsDodged: number; skillshotsHit: number; snowballsHit: number; soloBaronKills: number; soloKills: number; stealthWardsPlaced: number; survivedSingleDigitHpCount: number; survivedThreeImmobilizesInFight: number; takedownOnFirstTurret: number; takedowns: number; takedownsAfterGainingLevelAdvantage: number; takedownsBeforeJungleMinionSpawn: number; takedownsFirstXMinutes: number; takedownsInAlcove: number; takedownsInEnemyFountain: number; teamBaronKills: number; teamDamagePercentage: number; teamElderDragonKills: number; teamRiftHeraldKills: number; teleportTakedowns?: number; tookLargeDamageSurvived: number; turretPlatesTaken: number; turretTakedowns: number; turretsTakenWithRiftHerald: number; twentyMinionsIn3SecondsCount: number; twoWardsOneSweeperCount: number; unseenRecalls: number; visionScoreAdvantageLaneOpponent: number; visionScorePerMinute: number; voidMonsterKill: number; wardTakedowns: number; wardTakedownsBefore20M: number; wardsGuarded: number }; champExperience: number; champLevel: number; championId: number; championName: string; championTransform: number; commandPings: number; consumablesPurchased: number; damageDealtToBuildings: number; damageDealtToEpicMonsters: number; damageDealtToObjectives: number; damageDealtToTurrets: number; damageSelfMitigated: number; dangerPings: number; deaths: number; detectorWardsPlaced: number; doubleKills: number; dragonKills: number; eligibleForProgression: boolean; enemyMissingPings: number; enemyVisionPings: number; firstBloodAssist: boolean; firstBloodKill: boolean; firstTowerAssist: boolean; firstTowerKill: boolean; gameEndedInEarlySurrender: boolean; gameEndedInSurrender: boolean; getBackPings: number; goldEarned: number; goldSpent: number; holdPings: number; individualPosition: string; inhibitorKills: number; inhibitorTakedowns: number; inhibitorsLost: number; item0: number; item1: number; item2: number; item3: number; item4: number; item5: number; item6: number; itemsPurchased: number; killingSprees: number; kills: number; lane: string; largestCriticalStrike: number; largestKillingSpree: number; largestMultiKill: number; longestTimeSpentLiving: number; magicDamageDealt: number; magicDamageDealtToChampions: number; magicDamageTaken: number; missions: { playerScore0: number; playerScore1: number; playerScore10: number; playerScore11: number; playerScore2: number; playerScore3: number; playerScore4: number; playerScore5: number; playerScore6: number; playerScore7: number; playerScore8: number; playerScore9: number }; needVisionPings: number; neutralMinionsKilled: number; nexusKills: number; nexusLost: number; nexusTakedowns: number; objectivesStolen: number; objectivesStolenAssists: number; onMyWayPings: number; participantId: number; pentaKills: number; perks: { statPerks: { defense: number; flex: number; offense: number }; styles: ({ description: string; selections: ({ perk: number; var1: number; var2: number; var3: number })[]; style: number })[] }; physicalDamageDealt: number; physicalDamageDealtToChampions: number; physicalDamageTaken: number; placement: number; playerAugment1: number; playerAugment2: number; playerAugment3: number; playerAugment4: number; playerAugment5: number; playerAugment6: number; playerSubteamId: number; profileIcon: number; pushPings: number; puuid: string; quadraKills: number; retreatPings: number; riotIdGameName: string; riotIdTagline: string; role: string; roleBoundItem: number; sightWardsBoughtInGame: number; spell1Casts: number; spell2Casts: number; spell3Casts: number; spell4Casts: number; subteamPlacement: number; summoner1Casts: number; summoner1Id: number; summoner2Casts: number; summoner2Id: number; summonerId: string; summonerLevel: number; summonerName: string; teamEarlySurrendered: boolean; teamId: number; teamPosition: string; timeCCingOthers: number; timePlayed: number; totalAllyJungleMinionsKilled: number; totalDamageDealt: number; totalDamageDealtToChampions: number; totalDamageShieldedOnTeammates: number; totalDamageTaken: number; totalEnemyJungleMinionsKilled: number; totalHeal: number; totalHealsOnTeammates: number; totalMinionsKilled: number; totalTimeCCDealt: number; totalTimeSpentDead: number; totalUnitsHealed: number; tripleKills: number; trueDamageDealt: number; trueDamageDealtToChampions: number; trueDamageTaken: number; turretKills: number; turretTakedowns: number; turretsLost: number; unrealKills: number; visionClearedPings: number; visionScore: number; visionWardsBoughtInGame: number; wardsKilled: number; wardsPlaced: number; win: boolean })[]; platformId: string; queueId: number; teams: ({ bans: ({ championId: number; pickTurn: number })[]; feats: { EPIC_MONSTER_KILL: { featState: number }; FIRST_BLOOD: { featState: number }; FIRST_TURRET: { featState: number } }; objectives: { atakhan: { first: boolean; kills: number }; baron: { first: boolean; kills: number }; champion: { first: boolean; kills: number }; dragon: { first: boolean; kills: number }; horde: { first: boolean; kills: number }; inhibitor: { first: boolean; kills: number }; riftHerald: { first: boolean; kills: number }; tower: { first: boolean; kills: number } }; teamId: number; win: boolean })[]; tournamentCode: string }; - /** Match metadata including data version and participant PUUIDs. */ + info: { endOfGameResult: string; gameCreation: number; gameDuration: number; gameEndTimestamp: number; gameId: number; gameMode: 'CLASSIC' | 'ODIN' | 'ARAM' | 'TUTORIAL' | 'URF' | 'DOOMBOTSTEEMO' | 'ONEFORALL' | 'ASCENSION' | 'FIRSTBLOOD' | 'KINGPORO' | 'SIEGE' | 'ASSASSINATE' | 'ARSR' | 'DARKSTAR' | 'STARGUARDIAN' | 'PROJECT' | 'GAMEMODEX' | 'NEXUSBLITZ' | 'ULTBOOK' | 'CHERRY' | 'STRAWBERRY'; gameName: string; gameStartTimestamp: number; gameType: 'CUSTOM_GAME' | 'MATCHED_GAME' | 'TUTORIAL_GAME'; gameVersion: string; mapId: number; participants: ({ PlayerBehavior: { PlayerBehavior_IsHeroInCombat: number }; PlayerScore0: number; PlayerScore1: number; PlayerScore10: number; PlayerScore11: number; PlayerScore2: number; PlayerScore3: number; PlayerScore4: number; PlayerScore5: number; PlayerScore6: number; PlayerScore7: number; PlayerScore8: number; PlayerScore9: number; allInPings: number; assistMePings: number; assists: number; baronKills: number; basicPings: number; challenges: { 12AssistStreakCount: number; HealFromMapSources: number; InfernalScalePickup: number; SWARM_DefeatAatrox: number; SWARM_DefeatBriar: number; SWARM_DefeatMiniBosses: number; SWARM_EvolveWeapon: number; SWARM_Have3Passives: number; SWARM_KillEnemy: number; SWARM_PickupGold: number; SWARM_ReachLevel50: number; SWARM_Survive15Min: number; SWARM_WinWith5EvolvedWeapons: number; abilityUses: number; acesBefore15Minutes: number; alliedJungleMonsterKills: number; baronTakedowns: number; blastConeOppositeOpponentCount: number; bountyGold: number; buffsStolen: number; completeSupportQuestInTime: number; controlWardTimeCoverageInRiverOrEnemyHalf?: number; controlWardsPlaced: number; damagePerMinute: number; damageTakenOnTeamPercentage: number; dancedWithRiftHerald: number; deathsByEnemyChamps: number; dodgeSkillShotsSmallWindow: number; doubleAces: number; dragonTakedowns: number; earliestDragonTakedown?: number; earlyLaningPhaseGoldExpAdvantage: number; effectiveHealAndShielding: number; elderDragonKillsWithOpposingSoul: number; elderDragonMultikills: number; enemyChampionImmobilizations: number; enemyJungleMonsterKills: number; epicMonsterKillsNearEnemyJungler: number; epicMonsterKillsWithin30SecondsOfSpawn: number; epicMonsterSteals: number; epicMonsterStolenWithoutSmite: number; firstTurretKilled: number; fistBumpParticipation: number; flawlessAces: number; fullTeamTakedown: number; gameLength: number; getTakedownsInAllLanesEarlyJungleAsLaner?: number; goldPerMinute: number; hadOpenNexus: number; highestCrowdControlScore?: number; immobilizeAndKillWithAlly: number; initialBuffCount: number; initialCrabCount: number; jungleCsBefore10Minutes: number; junglerKillsEarlyJungle?: number; junglerTakedownsNearDamagedEpicMonster: number; kTurretsDestroyedBeforePlatesFall: number; kda: number; killAfterHiddenWithAlly: number; killParticipation: number; killedChampTookFullTeamDamageSurvived: number; killingSprees: number; killsNearEnemyTurret: number; killsOnLanersEarlyJungleAsJungler?: number; killsOnOtherLanesEarlyJungleAsLaner?: number; killsOnRecentlyHealedByAramPack: number; killsUnderOwnTurret: number; killsWithHelpFromEpicMonster: number; knockEnemyIntoTeamAndKill: number; landSkillShotsEarlyGame: number; laneMinionsFirst10Minutes: number; laningPhaseGoldExpAdvantage: number; legendaryCount: number; legendaryItemUsed: number[]; lostAnInhibitor: number; maxCsAdvantageOnLaneOpponent: number; maxKillDeficit: number; maxLevelLeadLaneOpponent: number; mejaisFullStackInTime: number; moreEnemyJungleThanOpponent: number; multiKillOneSpell: number; multiTurretRiftHeraldCount: number; multikills: number; multikillsAfterAggressiveFlash: number; outerTurretExecutesBefore10Minutes: number; outnumberedKills: number; outnumberedNexusKill: number; perfectDragonSoulsTaken: number; perfectGame: number; pickKillWithAlly: number; playedChampSelectPosition: number; poroExplosions: number; quickCleanse: number; quickFirstTurret: number; quickSoloKills: number; riftHeraldTakedowns: number; saveAllyFromDeath: number; scuttleCrabKills: number; skillshotsDodged: number; skillshotsHit: number; snowballsHit: number; soloBaronKills: number; soloKills: number; soloTurretsLategame?: number; stealthWardsPlaced: number; survivedSingleDigitHpCount: number; survivedThreeImmobilizesInFight: number; takedownOnFirstTurret: number; takedowns: number; takedownsAfterGainingLevelAdvantage: number; takedownsBeforeJungleMinionSpawn: number; takedownsFirstXMinutes: number; takedownsInAlcove: number; takedownsInEnemyFountain: number; teamBaronKills: number; teamDamagePercentage: number; teamElderDragonKills: number; teamRiftHeraldKills: number; tookLargeDamageSurvived: number; turretPlatesTaken: number; turretTakedowns: number; turretsTakenWithRiftHerald: number; twentyMinionsIn3SecondsCount: number; twoWardsOneSweeperCount: number; unseenRecalls: number; visionScoreAdvantageLaneOpponent: number; visionScorePerMinute: number; voidMonsterKill: number; wardTakedowns: number; wardTakedownsBefore20M: number; wardsGuarded: number }; champExperience: number; champLevel: number; championId: number; championName: string; championTransform: number; commandPings: number; consumablesPurchased: number; damageDealtToBuildings: number; damageDealtToEpicMonsters: number; damageDealtToObjectives: number; damageDealtToTurrets: number; damageSelfMitigated: number; dangerPings: number; deaths: number; detectorWardsPlaced: number; doubleKills: number; dragonKills: number; eligibleForProgression: boolean; enemyMissingPings: number; enemyVisionPings: number; firstBloodAssist: boolean; firstBloodKill: boolean; firstTowerAssist: boolean; firstTowerKill: boolean; gameEndedInEarlySurrender: boolean; gameEndedInSurrender: boolean; getBackPings: number; goldEarned: number; goldSpent: number; holdPings: number; individualPosition: string; inhibitorKills: number; inhibitorTakedowns: number; inhibitorsLost: number; item0: number; item1: number; item2: number; item3: number; item4: number; item5: number; item6: number; itemsPurchased: number; killingSprees: number; kills: number; lane: string; largestCriticalStrike: number; largestKillingSpree: number; largestMultiKill: number; longestTimeSpentLiving: number; magicDamageDealt: number; magicDamageDealtToChampions: number; magicDamageTaken: number; missions: { playerScore0: number; playerScore1: number; playerScore10: number; playerScore11: number; playerScore2: number; playerScore3: number; playerScore4: number; playerScore5: number; playerScore6: number; playerScore7: number; playerScore8: number; playerScore9: number }; needVisionPings: number; neutralMinionsKilled: number; nexusKills: number; nexusLost: number; nexusTakedowns: number; objectivesStolen: number; objectivesStolenAssists: number; onMyWayPings: number; participantId: number; pentaKills: number; perks: { statPerks: { defense: number; flex: number; offense: number }; styles: ({ description: string; selections: ({ perk: number; var1: number; var2: number; var3: number })[]; style: number })[] }; physicalDamageDealt: number; physicalDamageDealtToChampions: number; physicalDamageTaken: number; placement: number; playerAugment1: number; playerAugment2: number; playerAugment3: number; playerAugment4: number; playerAugment5: number; playerAugment6: number; playerSubteamId: number; profileIcon: number; pushPings: number; puuid: string; quadraKills: number; retreatPings: number; riotIdGameName: string; riotIdTagline: string; role: string; roleBoundItem: number; sightWardsBoughtInGame: number; spell1Casts: number; spell2Casts: number; spell3Casts: number; spell4Casts: number; subteamPlacement: number; summoner1Casts: number; summoner1Id: number; summoner2Casts: number; summoner2Id: number; summonerId: string; summonerLevel: number; summonerName: string; teamEarlySurrendered: boolean; teamId: number; teamPosition: string; timeCCingOthers: number; timePlayed: number; totalAllyJungleMinionsKilled: number; totalDamageDealt: number; totalDamageDealtToChampions: number; totalDamageShieldedOnTeammates: number; totalDamageTaken: number; totalEnemyJungleMinionsKilled: number; totalHeal: number; totalHealsOnTeammates: number; totalMinionsKilled: number; totalTimeCCDealt: number; totalTimeSpentDead: number; totalUnitsHealed: number; tripleKills: number; trueDamageDealt: number; trueDamageDealtToChampions: number; trueDamageTaken: number; turretKills: number; turretTakedowns: number; turretsLost: number; unrealKills: number; visionClearedPings: number; visionScore: number; visionWardsBoughtInGame: number; wardsKilled: number; wardsPlaced: number; win: boolean })[]; platformId: string; queueId: number; teams: ({ bans: ({ championId: number; pickTurn: number })[]; objectives: { atakhan: { first: boolean; kills: number }; baron: { first: boolean; kills: number }; champion: { first: boolean; kills: number }; dragon: { first: boolean; kills: number }; horde: { first: boolean; kills: number }; inhibitor: { first: boolean; kills: number }; riftHerald: { first: boolean; kills: number }; tower: { first: boolean; kills: number } }; teamId: number; win: boolean })[]; tournamentCode: string }; metadata: { dataVersion: string; matchId: string; participants: string[] }; } -/** Frame-by-frame timeline data for a match. */ export interface LolMatchTimeline { - /** Timeline info with frames containing events and participant snapshots at each interval. */ info: { endOfGameResult: string; frameInterval: number; frames: ({ events: ({ creatorId?: number; itemId?: number; level?: number; levelUpType?: string; participantId?: number; realTimestamp?: number; skillSlot?: number; timestamp: number; type: 'CHAMPION' | 'ACCOUNT'; wardType?: string })[]; participantFrames: { 1: { championStats: { abilityHaste: number; abilityPower: number; armor: number; armorPen: number; armorPenPercent: number; attackDamage: number; attackSpeed: number; bonusArmorPenPercent: number; bonusMagicPenPercent: number; ccReduction: number; cooldownReduction: number; health: number; healthMax: number; healthRegen: number; lifesteal: number; magicPen: number; magicPenPercent: number; magicResist: number; movementSpeed: number; omnivamp: number; physicalVamp: number; power: number; powerMax: number; powerRegen: number; spellVamp: number }; currentGold: number; damageStats: { magicDamageDone: number; magicDamageDoneToChampions: number; magicDamageTaken: number; physicalDamageDone: number; physicalDamageDoneToChampions: number; physicalDamageTaken: number; totalDamageDone: number; totalDamageDoneToChampions: number; totalDamageTaken: number; trueDamageDone: number; trueDamageDoneToChampions: number; trueDamageTaken: number }; goldPerSecond: number; jungleMinionsKilled: number; level: number; minionsKilled: number; participantId: number; position: { x: number; y: number }; timeEnemySpentControlled: number; totalGold: number; xp: number }; 10: { championStats: { abilityHaste: number; abilityPower: number; armor: number; armorPen: number; armorPenPercent: number; attackDamage: number; attackSpeed: number; bonusArmorPenPercent: number; bonusMagicPenPercent: number; ccReduction: number; cooldownReduction: number; health: number; healthMax: number; healthRegen: number; lifesteal: number; magicPen: number; magicPenPercent: number; magicResist: number; movementSpeed: number; omnivamp: number; physicalVamp: number; power: number; powerMax: number; powerRegen: number; spellVamp: number }; currentGold: number; damageStats: { magicDamageDone: number; magicDamageDoneToChampions: number; magicDamageTaken: number; physicalDamageDone: number; physicalDamageDoneToChampions: number; physicalDamageTaken: number; totalDamageDone: number; totalDamageDoneToChampions: number; totalDamageTaken: number; trueDamageDone: number; trueDamageDoneToChampions: number; trueDamageTaken: number }; goldPerSecond: number; jungleMinionsKilled: number; level: number; minionsKilled: number; participantId: number; position: { x: number; y: number }; timeEnemySpentControlled: number; totalGold: number; xp: number }; 2: { championStats: { abilityHaste: number; abilityPower: number; armor: number; armorPen: number; armorPenPercent: number; attackDamage: number; attackSpeed: number; bonusArmorPenPercent: number; bonusMagicPenPercent: number; ccReduction: number; cooldownReduction: number; health: number; healthMax: number; healthRegen: number; lifesteal: number; magicPen: number; magicPenPercent: number; magicResist: number; movementSpeed: number; omnivamp: number; physicalVamp: number; power: number; powerMax: number; powerRegen: number; spellVamp: number }; currentGold: number; damageStats: { magicDamageDone: number; magicDamageDoneToChampions: number; magicDamageTaken: number; physicalDamageDone: number; physicalDamageDoneToChampions: number; physicalDamageTaken: number; totalDamageDone: number; totalDamageDoneToChampions: number; totalDamageTaken: number; trueDamageDone: number; trueDamageDoneToChampions: number; trueDamageTaken: number }; goldPerSecond: number; jungleMinionsKilled: number; level: number; minionsKilled: number; participantId: number; position: { x: number; y: number }; timeEnemySpentControlled: number; totalGold: number; xp: number }; 3: { championStats: { abilityHaste: number; abilityPower: number; armor: number; armorPen: number; armorPenPercent: number; attackDamage: number; attackSpeed: number; bonusArmorPenPercent: number; bonusMagicPenPercent: number; ccReduction: number; cooldownReduction: number; health: number; healthMax: number; healthRegen: number; lifesteal: number; magicPen: number; magicPenPercent: number; magicResist: number; movementSpeed: number; omnivamp: number; physicalVamp: number; power: number; powerMax: number; powerRegen: number; spellVamp: number }; currentGold: number; damageStats: { magicDamageDone: number; magicDamageDoneToChampions: number; magicDamageTaken: number; physicalDamageDone: number; physicalDamageDoneToChampions: number; physicalDamageTaken: number; totalDamageDone: number; totalDamageDoneToChampions: number; totalDamageTaken: number; trueDamageDone: number; trueDamageDoneToChampions: number; trueDamageTaken: number }; goldPerSecond: number; jungleMinionsKilled: number; level: number; minionsKilled: number; participantId: number; position: { x: number; y: number }; timeEnemySpentControlled: number; totalGold: number; xp: number }; 4: { championStats: { abilityHaste: number; abilityPower: number; armor: number; armorPen: number; armorPenPercent: number; attackDamage: number; attackSpeed: number; bonusArmorPenPercent: number; bonusMagicPenPercent: number; ccReduction: number; cooldownReduction: number; health: number; healthMax: number; healthRegen: number; lifesteal: number; magicPen: number; magicPenPercent: number; magicResist: number; movementSpeed: number; omnivamp: number; physicalVamp: number; power: number; powerMax: number; powerRegen: number; spellVamp: number }; currentGold: number; damageStats: { magicDamageDone: number; magicDamageDoneToChampions: number; magicDamageTaken: number; physicalDamageDone: number; physicalDamageDoneToChampions: number; physicalDamageTaken: number; totalDamageDone: number; totalDamageDoneToChampions: number; totalDamageTaken: number; trueDamageDone: number; trueDamageDoneToChampions: number; trueDamageTaken: number }; goldPerSecond: number; jungleMinionsKilled: number; level: number; minionsKilled: number; participantId: number; position: { x: number; y: number }; timeEnemySpentControlled: number; totalGold: number; xp: number }; 5: { championStats: { abilityHaste: number; abilityPower: number; armor: number; armorPen: number; armorPenPercent: number; attackDamage: number; attackSpeed: number; bonusArmorPenPercent: number; bonusMagicPenPercent: number; ccReduction: number; cooldownReduction: number; health: number; healthMax: number; healthRegen: number; lifesteal: number; magicPen: number; magicPenPercent: number; magicResist: number; movementSpeed: number; omnivamp: number; physicalVamp: number; power: number; powerMax: number; powerRegen: number; spellVamp: number }; currentGold: number; damageStats: { magicDamageDone: number; magicDamageDoneToChampions: number; magicDamageTaken: number; physicalDamageDone: number; physicalDamageDoneToChampions: number; physicalDamageTaken: number; totalDamageDone: number; totalDamageDoneToChampions: number; totalDamageTaken: number; trueDamageDone: number; trueDamageDoneToChampions: number; trueDamageTaken: number }; goldPerSecond: number; jungleMinionsKilled: number; level: number; minionsKilled: number; participantId: number; position: { x: number; y: number }; timeEnemySpentControlled: number; totalGold: number; xp: number }; 6: { championStats: { abilityHaste: number; abilityPower: number; armor: number; armorPen: number; armorPenPercent: number; attackDamage: number; attackSpeed: number; bonusArmorPenPercent: number; bonusMagicPenPercent: number; ccReduction: number; cooldownReduction: number; health: number; healthMax: number; healthRegen: number; lifesteal: number; magicPen: number; magicPenPercent: number; magicResist: number; movementSpeed: number; omnivamp: number; physicalVamp: number; power: number; powerMax: number; powerRegen: number; spellVamp: number }; currentGold: number; damageStats: { magicDamageDone: number; magicDamageDoneToChampions: number; magicDamageTaken: number; physicalDamageDone: number; physicalDamageDoneToChampions: number; physicalDamageTaken: number; totalDamageDone: number; totalDamageDoneToChampions: number; totalDamageTaken: number; trueDamageDone: number; trueDamageDoneToChampions: number; trueDamageTaken: number }; goldPerSecond: number; jungleMinionsKilled: number; level: number; minionsKilled: number; participantId: number; position: { x: number; y: number }; timeEnemySpentControlled: number; totalGold: number; xp: number }; 7: { championStats: { abilityHaste: number; abilityPower: number; armor: number; armorPen: number; armorPenPercent: number; attackDamage: number; attackSpeed: number; bonusArmorPenPercent: number; bonusMagicPenPercent: number; ccReduction: number; cooldownReduction: number; health: number; healthMax: number; healthRegen: number; lifesteal: number; magicPen: number; magicPenPercent: number; magicResist: number; movementSpeed: number; omnivamp: number; physicalVamp: number; power: number; powerMax: number; powerRegen: number; spellVamp: number }; currentGold: number; damageStats: { magicDamageDone: number; magicDamageDoneToChampions: number; magicDamageTaken: number; physicalDamageDone: number; physicalDamageDoneToChampions: number; physicalDamageTaken: number; totalDamageDone: number; totalDamageDoneToChampions: number; totalDamageTaken: number; trueDamageDone: number; trueDamageDoneToChampions: number; trueDamageTaken: number }; goldPerSecond: number; jungleMinionsKilled: number; level: number; minionsKilled: number; participantId: number; position: { x: number; y: number }; timeEnemySpentControlled: number; totalGold: number; xp: number }; 8: { championStats: { abilityHaste: number; abilityPower: number; armor: number; armorPen: number; armorPenPercent: number; attackDamage: number; attackSpeed: number; bonusArmorPenPercent: number; bonusMagicPenPercent: number; ccReduction: number; cooldownReduction: number; health: number; healthMax: number; healthRegen: number; lifesteal: number; magicPen: number; magicPenPercent: number; magicResist: number; movementSpeed: number; omnivamp: number; physicalVamp: number; power: number; powerMax: number; powerRegen: number; spellVamp: number }; currentGold: number; damageStats: { magicDamageDone: number; magicDamageDoneToChampions: number; magicDamageTaken: number; physicalDamageDone: number; physicalDamageDoneToChampions: number; physicalDamageTaken: number; totalDamageDone: number; totalDamageDoneToChampions: number; totalDamageTaken: number; trueDamageDone: number; trueDamageDoneToChampions: number; trueDamageTaken: number }; goldPerSecond: number; jungleMinionsKilled: number; level: number; minionsKilled: number; participantId: number; position: { x: number; y: number }; timeEnemySpentControlled: number; totalGold: number; xp: number }; 9: { championStats: { abilityHaste: number; abilityPower: number; armor: number; armorPen: number; armorPenPercent: number; attackDamage: number; attackSpeed: number; bonusArmorPenPercent: number; bonusMagicPenPercent: number; ccReduction: number; cooldownReduction: number; health: number; healthMax: number; healthRegen: number; lifesteal: number; magicPen: number; magicPenPercent: number; magicResist: number; movementSpeed: number; omnivamp: number; physicalVamp: number; power: number; powerMax: number; powerRegen: number; spellVamp: number }; currentGold: number; damageStats: { magicDamageDone: number; magicDamageDoneToChampions: number; magicDamageTaken: number; physicalDamageDone: number; physicalDamageDoneToChampions: number; physicalDamageTaken: number; totalDamageDone: number; totalDamageDoneToChampions: number; totalDamageTaken: number; trueDamageDone: number; trueDamageDoneToChampions: number; trueDamageTaken: number }; goldPerSecond: number; jungleMinionsKilled: number; level: number; minionsKilled: number; participantId: number; position: { x: number; y: number }; timeEnemySpentControlled: number; totalGold: number; xp: number } }; timestamp: number })[]; gameId: number; participants: ({ participantId: number; puuid: string })[] }; - /** Match metadata including data version and participant PUUIDs. */ metadata: { dataVersion: string; matchId: string; participants: string[] }; } -/** Platform status data including incidents and scheduled maintenances. */ export interface LolPlatformData { - /** Platform identifier (e.g., "NA1"). */ id: string; - /** Active incidents affecting the platform. */ incidents: unknown[]; - /** Supported locale codes for the platform. */ locales: string[]; - /** Scheduled or active maintenance windows. */ - maintenances: ({ archive_at: string; created_at: string; id: number; incident_severity: unknown | null; maintenance_status: string; platforms: string[]; titles: ({ content: string; locale: string })[]; updated_at: unknown | null; updates: ({ author: string; created_at: string; id: number; publish: boolean; publish_locations: string[]; translations: ({ content: string; locale: string })[]; updated_at: string })[] })[]; - /** Human-readable platform name (e.g., "North America"). */ + maintenances: unknown[]; name: string; } -/** Summoner profile data from the Riot API. */ export interface LolSummoner { - /** ID of the summoner icon. */ profileIconId: number; - /** Player Universally Unique Identifier (PUUID). */ puuid: string; - /** Date summoner was last modified, as epoch milliseconds. */ revisionDate: number; - /** Summoner level. */ summonerLevel: number; } -/** Observer encryption key for spectating a game. */ export interface Observer { - /** Encryption key used to spectate this game. */ encryptionKey: string; } -/** Rune (perk) configuration for a game participant. */ export interface Perks { - /** List of selected perk (rune) IDs. */ perkIds: number[]; - /** Primary perk style (keystone tree). */ perkStyle: number; - /** Secondary perk style (secondary tree). */ perkSubStyle: number; } -/** A player's challenge progress, preferences, and point totals. */ export interface PlayerInfo { - /** Points earned per challenge category (COLLECTION, EXPERTISE, IMAGINATION, TEAMWORK, VETERANCY). */ categoryPoints: { COLLECTION: { current: number; level: string; max: number; percentile: number }; EXPERTISE: { current: number; level: string; max: number; percentile: number }; IMAGINATION: { current: number; level: string; max: number; percentile: number }; TEAMWORK: { current: number; level: string; max: number; percentile: number }; VETERANCY: { current: number; level: string; max: number; percentile: number } }; - /** Individual challenge progress entries. */ challenges: ({ achievedTime: number; challengeId: number; level: string; percentile: number; value: number })[]; - /** Player's challenge display preferences (banner, title, etc.). */ preferences: { bannerAccent: string; challengeIds: unknown[]; crestBorder: string; prestigeCrestBorderLevel: number; title: string }; - /** Aggregated challenge points across all categories. */ totalPoints: { current: number; level: string; max: number; percentile: number }; } -/** A Clash tournament with its schedule and theme. */ export interface Tournament { - /** Unique tournament identifier. */ id: number; - /** Localization key for the tournament name. */ nameKey: string; - /** Secondary localization key for the tournament name. */ nameKeySecondary: string; - /** Scheduled phases for this tournament (registration and start times). */ schedule: ({ cancelled: boolean; id: number; registrationTime: number; startTime: number })[]; - /** Theme identifier for the tournament. */ themeId: number; } diff --git a/packages/whisper/src/types/generated/lor.ts b/packages/whisper/src/types/generated/lor.ts index de2fd3a..787ec3e 100644 --- a/packages/whisper/src/types/generated/lor.ts +++ b/packages/whisper/src/types/generated/lor.ts @@ -1,75 +1,41 @@ // Auto-generated by generate-schema. Do not edit. -/** Localized content string with a locale identifier */ + export interface Content { - /** The content text */ content: string; - /** Locale code (e.g., 'en_US') */ locale: string; } -/** - * Legends of Runeterra ranked leaderboard data. - * - * Contains the top players for a given region's ranked ladder. - */ export interface LorLeaderboard { - /** Array of ranked players with their LP, name, and rank position */ - players: ({ /** League points */ lp: number; /** Player name */ name: string; /** Leaderboard position */ rank: number })[]; + players: ({ lp: number; name: string; rank: number })[]; } -/** - * Legends of Runeterra platform status data. - * - * Contains active incidents and scheduled maintenances for the LoR platform. - */ export interface LorPlatformData { - /** Platform region identifier (e.g., 'Americas') */ id: string; - /** Active incidents affecting the platform */ - incidents: ({ /** Time when the incident was archived */ archive_at: string; /** Time when the incident was created */ created_at: string; /** Unique incident identifier */ id: number; /** Severity level of the incident */ incident_severity: string; /** Current maintenance status */ maintenance_status: string; /** Affected platforms */ platforms: string[]; /** Localized title content */ titles: ({ /** Title text */ content: string; /** Locale code */ locale: string })[]; /** Time of last update */ updated_at: string; /** Chronological list of updates for this incident */ updates: ({ /** Author of the update */ author: string; /** Time the update was created */ created_at: string; /** Unique update identifier */ id: number; /** Whether the update is published */ publish: boolean; /** Where the update was published */ publish_locations: string[]; /** Localized translations of the update */ translations: ({ /** Translation text */ content: string; /** Locale code */ locale: string })[]; /** Time the update was last modified */ updated_at: string })[] })[]; - /** Supported locale codes */ locales: string[]; - /** Scheduled maintenances for the platform */ - maintenances: ({ /** Time when the maintenance was archived */ archive_at: string; /** Time when the maintenance was created */ created_at: string; /** Unique maintenance identifier */ id: number; /** Severity level */ incident_severity: string; /** Current maintenance status */ maintenance_status: string; /** Affected platforms */ platforms: string[]; /** Localized title content */ titles: ({ /** Title text */ content: string; /** Locale code */ locale: string })[]; /** Time of last update */ updated_at: string; /** Chronological list of updates for this maintenance */ updates: ({ /** Author of the update */ author: string; /** Time the update was created */ created_at: string; /** Unique update identifier */ id: number; /** Whether the update is published */ publish: boolean; /** Where the update was published */ publish_locations: string[]; /** Localized translations of the update */ translations: ({ /** Translation text */ content: string; /** Locale code */ locale: string })[]; /** Time the update was last modified */ updated_at: string })[] })[]; - /** Human-readable platform name */ name: string; + incidents: ({ archive_at: string; created_at: string; id: number; incident_severity: string; maintenance_status: string; platforms: string[]; titles: ({ content: string; locale: string })[]; updated_at: string; updates: ({ author: string; created_at: string; id: number; publish: boolean; publish_locations: string[]; translations: ({ content: string; locale: string })[]; updated_at: string })[] })[]; + locales: string[]; + maintenances: ({ archive_at: string; created_at: string; id: number; incident_severity: string; maintenance_status: string; platforms: string[]; titles: ({ content: string; locale: string })[]; updated_at: string; updates: ({ author: string; created_at: string; id: number; publish: boolean; publish_locations: string[]; translations: ({ content: string; locale: string })[]; updated_at: string })[] })[]; + name: string; } -/** A status entry representing an incident or maintenance event */ export interface Status { - /** Time when the status was archived */ archive_at: string; - /** Time when the status was created */ created_at: string; - /** Unique status identifier */ id: number; - /** Severity level of the incident */ incident_severity: string; - /** Current maintenance status */ maintenance_status: string; - /** Affected platforms */ platforms: string[]; - /** Localized title content */ - titles: ({ /** Title text */ content: string; /** Locale code */ locale: string })[]; - /** Time of last update */ + titles: ({ content: string; locale: string })[]; updated_at: string; - /** Chronological list of updates */ - updates: ({ /** Author of the update */ author: string; /** Time the update was created */ created_at: string; /** Unique update identifier */ id: number; /** Whether the update is published */ publish: boolean; /** Where the update was published */ publish_locations: string[]; /** Localized translations */ translations: ({ /** Translation text */ content: string; /** Locale code */ locale: string })[]; /** Time the update was last modified */ updated_at: string })[]; + updates: ({ author: string; created_at: string; id: number; publish: boolean; publish_locations: string[]; translations: ({ content: string; locale: string })[]; updated_at: string })[]; } -/** A status update entry within an incident or maintenance */ export interface Update { - /** Author of the update */ author: string; - /** Time the update was created */ created_at: string; - /** Unique update identifier */ id: number; - /** Whether the update is published */ publish: boolean; - /** Where the update was published */ publish_locations: string[]; - /** Localized translations of the update */ - translations: ({ /** Translation text */ content: string; /** Locale code */ locale: string })[]; - /** Time the update was last modified */ + translations: ({ content: string; locale: string })[]; updated_at: string; } diff --git a/packages/whisper/src/types/generated/riftbound.ts b/packages/whisper/src/types/generated/riftbound.ts index 9372046..b1828ad 100644 --- a/packages/whisper/src/types/generated/riftbound.ts +++ b/packages/whisper/src/types/generated/riftbound.ts @@ -1,83 +1,44 @@ // Auto-generated by generate-schema. Do not edit. -/** - * A card in the Riftbound card game. - * - * Contains all metadata, art references, stats, and tags for a single card. - */ + export interface Card { - /** Card artwork references */ - art: { /** Artist name */ artist: string; /** Full-resolution image URL */ fullURL: string; /** Thumbnail image URL */ thumbnailURL: string }; - /** Card collector number within its set */ + art: { artist: string; fullURL: string; thumbnailURL: string }; collectorNumber: number; - /** Card description text */ description: string; - /** Card faction (e.g., regional affiliation) */ faction: string; - /** Flavor text for lore/storytelling */ flavorText: string; - /** Unique card identifier */ id: string; - /** Keyword abilities on the card */ keywords: string[]; - /** Card name */ name: string; - /** Card rarity tier */ rarity: string; - /** Set identifier this card belongs to */ set: string; - /** Card gameplay statistics */ - stats: { /** Mana/resource cost */ cost: number; /** Energy stat */ energy: number; /** Might stat */ might: number; /** Power stat */ power: number }; - /** Searchable tags for card categorization */ + stats: { cost: number; energy: number; might: number; power: number }; tags: string[]; - /** Card type (CHAMPION or ACCOUNT) */ type: 'CHAMPION' | 'ACCOUNT'; } -/** Artwork references for a Riftbound card */ export interface CardArt { - /** Artist name */ artist: string; - /** Full-resolution image URL */ fullURL: string; - /** Thumbnail image URL */ thumbnailURL: string; } -/** Gameplay statistics for a Riftbound card */ export interface CardStats { - /** Mana/resource cost */ cost: number; - /** Energy stat */ energy: number; - /** Might stat */ might: number; - /** Power stat */ power: number; } -/** - * Riftbound content data including all card sets and metadata. - * - * Contains the full game content catalog with versioning information. - */ export interface RiftboundContent { - /** Game identifier */ game: string; - /** ISO timestamp of last content update */ lastUpdated: string; - /** Array of card sets, each containing its cards */ - sets: ({ /** Cards in this set */ cards: ({ /** Card artwork references */ art: { /** Artist name */ artist: string; /** Full-resolution image URL */ fullURL: string; /** Thumbnail image URL */ thumbnailURL: string }; /** Card collector number within its set */ collectorNumber: number; /** Card description text */ description: string; /** Card faction */ faction: string; /** Flavor text */ flavorText: string; /** Unique card identifier */ id: string; /** Keyword abilities */ keywords: string[]; /** Card name */ name: string; /** Card rarity tier */ rarity: string; /** Set identifier */ set: string; /** Card gameplay statistics */ stats: { /** Mana/resource cost */ cost: number; /** Energy stat */ energy: number; /** Might stat */ might: number; /** Power stat */ power: number }; /** Searchable tags */ tags: string[]; /** Card type */ type: 'CHAMPION' | 'ACCOUNT' })[]; /** Set identifier */ id: string; /** Set name */ name: string })[]; - /** Content version string */ + sets: ({ cards: ({ art: { artist: string; fullURL: string; thumbnailURL: string }; collectorNumber: number; description: string; faction: string; flavorText: string; id: string; keywords: string[]; name: string; rarity: string; set: string; stats: { cost: number; energy: number; might: number; power: number }; tags: string[]; type: 'CHAMPION' | 'ACCOUNT' })[]; id: string; name: string })[]; version: string; } -/** A set of cards in Riftbound */ export interface Set { - /** Cards in this set */ - cards: ({ /** Card artwork references */ art: { /** Artist name */ artist: string; /** Full-resolution image URL */ fullURL: string; /** Thumbnail image URL */ thumbnailURL: string }; /** Card collector number */ collectorNumber: number; /** Card description text */ description: string; /** Card faction */ faction: string; /** Flavor text */ flavorText: string; /** Unique card identifier */ id: string; /** Keyword abilities */ keywords: string[]; /** Card name */ name: string; /** Card rarity tier */ rarity: string; /** Set identifier */ set: string; /** Card gameplay statistics */ stats: { /** Mana/resource cost */ cost: number; /** Energy stat */ energy: number; /** Might stat */ might: number; /** Power stat */ power: number }; /** Searchable tags */ tags: string[]; /** Card type */ type: 'CHAMPION' | 'ACCOUNT' })[]; - /** Set identifier */ + cards: ({ art: { artist: string; fullURL: string; thumbnailURL: string }; collectorNumber: number; description: string; faction: string; flavorText: string; id: string; keywords: string[]; name: string; rarity: string; set: string; stats: { cost: number; energy: number; might: number; power: number }; tags: string[]; type: 'CHAMPION' | 'ACCOUNT' })[]; id: string; - /** Set name */ name: string; } diff --git a/packages/whisper/src/types/generated/riot.ts b/packages/whisper/src/types/generated/riot.ts index 0360fa9..5f090b2 100644 --- a/packages/whisper/src/types/generated/riot.ts +++ b/packages/whisper/src/types/generated/riot.ts @@ -1,12 +1,8 @@ // Auto-generated by generate-schema. Do not edit. -/** Riot account information linked to a Riot ID. */ export interface Account { - /** In-game name component of the Riot ID. */ gameName: string; - /** Player Universally Unique Identifier (PUUID). */ puuid: string; - /** Tag component of the Riot ID (e.g., "NA1"). */ tagLine: string; } diff --git a/packages/whisper/src/types/generated/tft.ts b/packages/whisper/src/types/generated/tft.ts index c8a71b7..079043e 100644 --- a/packages/whisper/src/types/generated/tft.ts +++ b/packages/whisper/src/types/generated/tft.ts @@ -1,131 +1,77 @@ // Auto-generated by generate-schema. Do not edit. -/** A banned champion entry in a TFT spectator game */ + export interface BannedChampion { - /** Numeric champion ID */ championId: number; - /** Pick turn order in champion select */ pickTurn: number; - /** Team ID the ban belongs to (100 = blue, 200 = red) */ teamId: number; } -/** A participant in a live TFT game */ export interface CurrentGameParticipant { - /** Whether this participant is a bot */ bot: boolean; - /** Numeric champion ID */ championId: number; - /** Custom game customization objects */ - gameCustomizationObjects: { category: string; content: string }[]; - /** Rune (perk) configuration for this participant */ + gameCustomizationObjects: ({ category: string; content: string })[]; perks: { perkIds: number[]; perkStyle: number; perkSubStyle: number }; - /** Summoner profile icon ID */ profileIconId: number; - /** Encrypted PUUID */ puuid: string; - /** First summoner spell ID */ spell1Id: number; - /** Second summoner spell ID */ spell2Id: number; - /** Team ID (100 = blue, 200 = red) */ teamId: number; } -/** Game customization data for spectator mode */ export interface GameCustomizationObject { - /** Customization category */ category: string; - /** Customization content */ content: string; } -/** Observer credentials for spectating a live game */ export interface Observer { - /** Encryption key required to spectate the game */ encryptionKey: string; } -/** Rune (perk) configuration for a participant */ export interface Perks { - /** Array of selected perk (rune) IDs */ perkIds: number[]; - /** Primary perk style ID */ perkStyle: number; - /** Secondary (sub) perk style ID */ perkSubStyle: number; } -/** Live TFT game information from the spectator API */ export interface TftCurrentGameInfo { - /** List of banned champions in this game */ - bannedChampions: { championId: number; pickTurn: number; teamId: number }[]; - /** Unique game ID */ + bannedChampions: ({ championId: number; pickTurn: number; teamId: number })[]; gameId: number; - /** Current game length in seconds */ gameLength: number; - /** Game mode identifier */ gameMode: 'CLASSIC' | 'ODIN' | 'ARAM' | 'TUTORIAL' | 'URF' | 'DOOMBOTSTEEMO' | 'ONEFORALL' | 'ASCENSION' | 'FIRSTBLOOD' | 'KINGPORO' | 'SIEGE' | 'ASSASSINATE' | 'ARSR' | 'DARKSTAR' | 'STARGUARDIAN' | 'PROJECT' | 'GAMEMODEX' | 'NEXUSBLITZ' | 'ULTBOOK' | 'CHERRY' | 'STRAWBERRY'; - /** Queue configuration ID */ gameQueueConfigId: number; - /** Unix timestamp in milliseconds when the game started */ gameStartTime: number; - /** Game type (custom, matched, or tutorial) */ gameType: 'CUSTOM_GAME' | 'MATCHED_GAME' | 'TUTORIAL_GAME'; - /** Map ID for this game */ mapId: number; - /** Observer credentials for spectating */ observers: { encryptionKey: string }; - /** List of participants in this game */ - participants: { bot: boolean; championId: number; gameCustomizationObjects: { category: string; content: string }[]; perks: { perkIds: number[]; perkStyle: number; perkSubStyle: number }; profileIconId: number; puuid: string; spell1Id: number; spell2Id: number; teamId: number }[]; - /** Platform ID where this game is running (e.g., "NA1") */ + participants: ({ bot: boolean; championId: number; gameCustomizationObjects: ({ category: string; content: string })[]; perks: { perkIds: number[]; perkStyle: number; perkSubStyle: number }; profileIconId: number; puuid: string; spell1Id: number; spell2Id: number; teamId: number })[]; platformId: string; } -/** A TFT ranked league containing a list of entries */ export interface TftLeagueList { - /** List of ranked entries in this league */ - entries: { freshBlood: boolean; hotStreak: boolean; inactive: boolean; leaguePoints: number; losses: number; puuid: string; rank: 'I' | 'II' | 'III' | 'IV'; veteran: boolean; wins: number }[]; - /** Unique league identifier */ + entries: ({ freshBlood: boolean; hotStreak: boolean; inactive: boolean; leaguePoints: number; losses: number; puuid: string; rank: 'I' | 'II' | 'III' | 'IV'; veteran: boolean; wins: number })[]; leagueId: string; - /** Display name of this league */ name: string; - /** Queue type (e.g., "RANKED_TFT") */ queue: string; - /** Tier of this league */ tier: 'IRON' | 'BRONZE' | 'SILVER' | 'GOLD' | 'PLATINUM' | 'EMERALD' | 'DIAMOND' | 'MASTER' | 'GRANDMASTER' | 'CHALLENGER'; } -/** Full TFT match data including game info and metadata */ export interface TftMatch { - /** Game information including participants, traits, and units */ - info: { endOfGameResult: string; gameCreation: number; gameId: number; game_datetime: number; game_length: number; game_version: string; mapId: number; participants: { companion: { content_ID: string; item_ID: number; skin_ID: number; species: string }; gold_left: number; last_round: number; level: number; missions: { PlayerScore2: number }; placement: number; players_eliminated: number; puuid: string; riotIdGameName: string; riotIdTagline: string; time_eliminated: number; total_damage_to_players: number; traits: { name: string; num_units: number; style: number; tier_current: number; tier_total: number }[]; units: { character_id: string; itemNames: string[]; name: string; rarity: number; tier: number }[]; win: boolean }[]; queueId: number; queue_id: number; tft_game_type: string; tft_set_core_name: string; tft_set_number: number }; - /** Match metadata including data version, match ID, and participant PUUIDs */ + info: { endOfGameResult: string; gameCreation: number; gameId: number; game_datetime: number; game_length: number; game_version: string; mapId: number; participants: ({ companion: { content_ID: string; item_ID: number; skin_ID: number; species: string }; gold_left: number; last_round: number; level: number; missions: { PlayerScore2: number }; placement: number; players_eliminated: number; puuid: string; riotIdGameName: string; riotIdTagline: string; time_eliminated: number; total_damage_to_players: number; traits: ({ name: string; num_units: number; style: number; tier_current: number; tier_total: number })[]; units: ({ character_id: string; itemNames: string[]; name: string; rarity: number; tier: number })[]; win: boolean })[]; queueId: number; queue_id: number; tft_game_type: string; tft_set_core_name: string; tft_set_number: number }; metadata: { data_version: string; match_id: string; participants: string[] }; } -/** TFT platform status data with incidents and maintenances */ export interface TftPlatformData { - /** Platform identifier (e.g., "NA1") */ id: string; - /** List of active incidents */ incidents: unknown[]; - /** Supported locale codes (e.g., ["en_US"]) */ locales: string[]; - /** List of scheduled or active maintenances */ - maintenances: { archive_at: string; created_at: string; id: number; incident_severity: unknown | null; maintenance_status: string; platforms: string[]; titles: { content: string; locale: string }[]; updated_at: unknown | null; updates: { author: string; created_at: string; id: number; publish: boolean; publish_locations: string[]; translations: { content: string; locale: string }[]; updated_at: string }[] }[]; - /** Display name of the platform (e.g., "North America") */ + maintenances: ({ archive_at: string; created_at: string; id: number; incident_severity: unknown | null; maintenance_status: string; platforms: string[]; titles: ({ content: string; locale: string })[]; updated_at: unknown | null; updates: ({ author: string; created_at: string; id: number; publish: boolean; publish_locations: string[]; translations: ({ content: string; locale: string })[]; updated_at: string })[] })[]; name: string; } -/** TFT summoner profile data */ export interface TftSummoner { - /** Summoner profile icon ID */ profileIconId: number; - /** Encrypted PUUID */ puuid: string; - /** Date of last profile modification as Unix timestamp in milliseconds */ revisionDate: number; - /** Summoner level */ summonerLevel: number; } diff --git a/packages/whisper/src/types/generated/val.ts b/packages/whisper/src/types/generated/val.ts index 6125345..4f91354 100644 --- a/packages/whisper/src/types/generated/val.ts +++ b/packages/whisper/src/types/generated/val.ts @@ -1,451 +1,264 @@ // Auto-generated by generate-schema. Do not edit. -/** Ability effects for a player's agent abilities in a round. */ export interface Ability { - /** Effect description for the first ability (C key). */ ability1Effects: string; - /** Effect description for the second ability (Q key). */ ability2Effects: string; - /** Effect description for the grenade ability (E key). */ grenadeEffects: string; - /** Effect description for the ultimate ability (X key). */ ultimateEffects: string; } -/** Number of times each ability was cast by a player. */ export interface AbilityCasts { - /** Number of first ability (C key) casts. */ ability1Casts: number; - /** Number of second ability (Q key) casts. */ ability2Casts: number; - /** Number of grenade ability (E key) casts. */ grenadeCasts: number; - /** Number of ultimate ability (X key) casts. */ ultimateCasts: number; } -/** A competitive act (season) in Valorant. */ export interface Act { - /** Unique identifier for the act. */ id: string; - /** Whether this act is currently active. */ isActive: boolean; - /** Localized display names keyed by locale code. */ - localizedNames: { "ar-AE": string; "de-DE": string; "en-GB": string; "en-US": string; "es-ES": string; "es-MX": string; "fr-FR": string; "id-ID": string; "it-IT": string; "ja-JP": string; "ko-KR": string; "pl-PL": string; "pt-BR": string; "ru-RU": string; "th-TH": string; "tr-TR": string; "vi-VN": string; "zh-CN": string; "zh-TW": string }; - /** Internal name of the act. */ + localizedNames: { ar-AE: string; de-DE: string; en-GB: string; en-US: string; es-ES: string; es-MX: string; fr-FR: string; id-ID: string; it-IT: string; ja-JP: string; ko-KR: string; pl-PL: string; pt-BR: string; ru-RU: string; th-TH: string; tr-TR: string; vi-VN: string; zh-CN: string; zh-TW: string }; name: string; } -/** A coach in a Valorant match (Premier/tournament matches). */ export interface Coach { - /** Encrypted PUUID of the coach. */ puuid: string; - /** Team identifier the coach belongs to. */ teamId: string; } -/** All game content available in Valorant for a given locale. */ export interface Content { - /** Available competitive acts (seasons). */ - acts: ({ id: string; isActive: boolean; localizedNames: { "ar-AE": string; "de-DE": string; "en-GB": string; "en-US": string; "es-ES": string; "es-MX": string; "fr-FR": string; "id-ID": string; "it-IT": string; "ja-JP": string; "ko-KR": string; "pl-PL": string; "pt-BR": string; "ru-RU": string; "th-TH": string; "tr-TR": string; "vi-VN": string; "zh-CN": string; "zh-TW": string }; name: string })[]; - /** Available agent characters. */ - characters: ({ assetName: string; assetPath: string; id: string; localizedNames: { "ar-AE": string; "de-DE": string; "en-GB": string; "en-US": string; "es-ES": string; "es-MX": string; "fr-FR": string; "id-ID": string; "it-IT": string; "ja-JP": string; "ko-KR": string; "pl-PL": string; "pt-BR": string; "ru-RU": string; "th-TH": string; "tr-TR": string; "vi-VN": string; "zh-CN": string; "zh-TW": string }; name: string })[]; - /** Available charm levels. */ - charmLevels: ({ assetName: string; assetPath: string; id: string; localizedNames: { "ar-AE": string; "de-DE": string; "en-GB": string; "en-US": string; "es-ES": string; "es-MX": string; "fr-FR": string; "id-ID": string; "it-IT": string; "ja-JP": string; "ko-KR": string; "pl-PL": string; "pt-BR": string; "ru-RU": string; "th-TH": string; "tr-TR": string; "vi-VN": string; "zh-CN": string; "zh-TW": string }; name: string })[]; - /** Available charms. */ - charms: ({ assetName: string; assetPath: string; id: string; localizedNames: { "ar-AE": string; "de-DE": string; "en-GB": string; "en-US": string; "es-ES": string; "es-MX": string; "fr-FR": string; "id-ID": string; "it-IT": string; "ja-JP": string; "ko-KR": string; "pl-PL": string; "pt-BR": string; "ru-RU": string; "th-TH": string; "tr-TR": string; "vi-VN": string; "zh-CN": string; "zh-TW": string }; name: string })[]; - /** Available weapon skin chromas. */ - chromas: ({ assetName: string; assetPath: string; id: string; localizedNames: { "ar-AE": string; "de-DE": string; "en-GB": string; "en-US": string; "es-ES": string; "es-MX": string; "fr-FR": string; "id-ID": string; "it-IT": string; "ja-JP": string; "ko-KR": string; "pl-PL": string; "pt-BR": string; "ru-RU": string; "th-TH": string; "tr-TR": string; "vi-VN": string; "zh-CN": string; "zh-TW": string }; name: string })[]; - /** Available equipment items (armor, etc.). */ - equips: ({ assetName: string; assetPath: string; id: string; localizedNames: { "ar-AE": string; "de-DE": string; "en-GB": string; "en-US": string; "es-ES": string; "es-MX": string; "fr-FR": string; "id-ID": string; "it-IT": string; "ja-JP": string; "ko-KR": string; "pl-PL": string; "pt-BR": string; "ru-RU": string; "th-TH": string; "tr-TR": string; "vi-VN": string; "zh-CN": string; "zh-TW": string }; name: string })[]; - /** Available game modes. */ - gameModes: ({ assetName: string; assetPath: string; id: string; localizedNames: { "ar-AE": string; "de-DE": string; "en-GB": string; "en-US": string; "es-ES": string; "es-MX": string; "fr-FR": string; "id-ID": string; "it-IT": string; "ja-JP": string; "ko-KR": string; "pl-PL": string; "pt-BR": string; "ru-RU": string; "th-TH": string; "tr-TR": string; "vi-VN": string; "zh-CN": string; "zh-TW": string }; name: string })[]; - /** Available maps. */ - maps: ({ assetName: string; assetPath: string; id: string; localizedNames: { "ar-AE": string; "de-DE": string; "en-GB": string; "en-US": string; "es-ES": string; "es-MX": string; "fr-FR": string; "id-ID": string; "it-IT": string; "ja-JP": string; "ko-KR": string; "pl-PL": string; "pt-BR": string; "ru-RU": string; "th-TH": string; "tr-TR": string; "vi-VN": string; "zh-CN": string; "zh-TW": string }; name: string })[]; - /** Available player card cosmetics. */ - playerCards: ({ assetName: string; assetPath: string; id: string; localizedNames: { "ar-AE": string; "de-DE": string; "en-GB": string; "en-US": string; "es-ES": string; "es-MX": string; "fr-FR": string; "id-ID": string; "it-IT": string; "ja-JP": string; "ko-KR": string; "pl-PL": string; "pt-BR": string; "ru-RU": string; "th-TH": string; "tr-TR": string; "vi-VN": string; "zh-CN": string; "zh-TW": string }; name: string })[]; - /** Available player title cosmetics. */ - playerTitles: ({ assetName: string; assetPath: string; id: string; localizedNames: { "ar-AE": string; "de-DE": string; "en-GB": string; "en-US": string; "es-ES": string; "es-MX": string; "fr-FR": string; "id-ID": string; "it-IT": string; "ja-JP": string; "ko-KR": string; "pl-PL": string; "pt-BR": string; "ru-RU": string; "th-TH": string; "tr-TR": string; "vi-VN": string; "zh-CN": string; "zh-TW": string }; name: string })[]; - /** Available weapon skin upgrade levels. */ - skinLevels: ({ assetName: string; assetPath: string; id: string; localizedNames: { "ar-AE": string; "de-DE": string; "en-GB": string; "en-US": string; "es-ES": string; "es-MX": string; "fr-FR": string; "id-ID": string; "it-IT": string; "ja-JP": string; "ko-KR": string; "pl-PL": string; "pt-BR": string; "ru-RU": string; "th-TH": string; "tr-TR": string; "vi-VN": string; "zh-CN": string; "zh-TW": string }; name: string })[]; - /** Available weapon skins. */ - skins: ({ assetName: string; assetPath: string; id: string; localizedNames: { "ar-AE": string; "de-DE": string; "en-GB": string; "en-US": string; "es-ES": string; "es-MX": string; "fr-FR": string; "id-ID": string; "it-IT": string; "ja-JP": string; "ko-KR": string; "pl-PL": string; "pt-BR": string; "ru-RU": string; "th-TH": string; "tr-TR": string; "vi-VN": string; "zh-CN": string; "zh-TW": string }; name: string })[]; - /** Available spray upgrade levels. */ - sprayLevels: ({ assetName: string; assetPath: string; id: string; localizedNames: { "ar-AE": string; "de-DE": string; "en-GB": string; "en-US": string; "es-ES": string; "es-MX": string; "fr-FR": string; "id-ID": string; "it-IT": string; "ja-JP": string; "ko-KR": string; "pl-PL": string; "pt-BR": string; "ru-RU": string; "th-TH": string; "tr-TR": string; "vi-VN": string; "zh-CN": string; "zh-TW": string }; name: string })[]; - /** Available spray cosmetics. */ - sprays: ({ assetName: string; assetPath: string; id: string; localizedNames: { "ar-AE": string; "de-DE": string; "en-GB": string; "en-US": string; "es-ES": string; "es-MX": string; "fr-FR": string; "id-ID": string; "it-IT": string; "ja-JP": string; "ko-KR": string; "pl-PL": string; "pt-BR": string; "ru-RU": string; "th-TH": string; "tr-TR": string; "vi-VN": string; "zh-CN": string; "zh-TW": string }; name: string })[]; - /** Current content version string. */ + acts: ({ id: string; isActive: boolean; localizedNames: { ar-AE: string; de-DE: string; en-GB: string; en-US: string; es-ES: string; es-MX: string; fr-FR: string; id-ID: string; it-IT: string; ja-JP: string; ko-KR: string; pl-PL: string; pt-BR: string; ru-RU: string; th-TH: string; tr-TR: string; vi-VN: string; zh-CN: string; zh-TW: string }; name: string })[]; + characters: ({ assetName: string; assetPath: string; id: string; localizedNames: { ar-AE: string; de-DE: string; en-GB: string; en-US: string; es-ES: string; es-MX: string; fr-FR: string; id-ID: string; it-IT: string; ja-JP: string; ko-KR: string; pl-PL: string; pt-BR: string; ru-RU: string; th-TH: string; tr-TR: string; vi-VN: string; zh-CN: string; zh-TW: string }; name: string })[]; + charmLevels: ({ assetName: string; assetPath: string; id: string; localizedNames: { ar-AE: string; de-DE: string; en-GB: string; en-US: string; es-ES: string; es-MX: string; fr-FR: string; id-ID: string; it-IT: string; ja-JP: string; ko-KR: string; pl-PL: string; pt-BR: string; ru-RU: string; th-TH: string; tr-TR: string; vi-VN: string; zh-CN: string; zh-TW: string }; name: string })[]; + charms: ({ assetName: string; assetPath: string; id: string; localizedNames: { ar-AE: string; de-DE: string; en-GB: string; en-US: string; es-ES: string; es-MX: string; fr-FR: string; id-ID: string; it-IT: string; ja-JP: string; ko-KR: string; pl-PL: string; pt-BR: string; ru-RU: string; th-TH: string; tr-TR: string; vi-VN: string; zh-CN: string; zh-TW: string }; name: string })[]; + chromas: ({ assetName: string; assetPath: string; id: string; localizedNames: { ar-AE: string; de-DE: string; en-GB: string; en-US: string; es-ES: string; es-MX: string; fr-FR: string; id-ID: string; it-IT: string; ja-JP: string; ko-KR: string; pl-PL: string; pt-BR: string; ru-RU: string; th-TH: string; tr-TR: string; vi-VN: string; zh-CN: string; zh-TW: string }; name: string })[]; + equips: ({ assetName: string; assetPath: string; id: string; localizedNames: { ar-AE: string; de-DE: string; en-GB: string; en-US: string; es-ES: string; es-MX: string; fr-FR: string; id-ID: string; it-IT: string; ja-JP: string; ko-KR: string; pl-PL: string; pt-BR: string; ru-RU: string; th-TH: string; tr-TR: string; vi-VN: string; zh-CN: string; zh-TW: string }; name: string })[]; + gameModes: ({ assetName: string; assetPath: string; id: string; localizedNames: { ar-AE: string; de-DE: string; en-GB: string; en-US: string; es-ES: string; es-MX: string; fr-FR: string; id-ID: string; it-IT: string; ja-JP: string; ko-KR: string; pl-PL: string; pt-BR: string; ru-RU: string; th-TH: string; tr-TR: string; vi-VN: string; zh-CN: string; zh-TW: string }; name: string })[]; + maps: ({ assetName: string; assetPath: string; id: string; localizedNames: { ar-AE: string; de-DE: string; en-GB: string; en-US: string; es-ES: string; es-MX: string; fr-FR: string; id-ID: string; it-IT: string; ja-JP: string; ko-KR: string; pl-PL: string; pt-BR: string; ru-RU: string; th-TH: string; tr-TR: string; vi-VN: string; zh-CN: string; zh-TW: string }; name: string })[]; + playerCards: ({ assetName: string; assetPath: string; id: string; localizedNames: { ar-AE: string; de-DE: string; en-GB: string; en-US: string; es-ES: string; es-MX: string; fr-FR: string; id-ID: string; it-IT: string; ja-JP: string; ko-KR: string; pl-PL: string; pt-BR: string; ru-RU: string; th-TH: string; tr-TR: string; vi-VN: string; zh-CN: string; zh-TW: string }; name: string })[]; + playerTitles: ({ assetName: string; assetPath: string; id: string; localizedNames: { ar-AE: string; de-DE: string; en-GB: string; en-US: string; es-ES: string; es-MX: string; fr-FR: string; id-ID: string; it-IT: string; ja-JP: string; ko-KR: string; pl-PL: string; pt-BR: string; ru-RU: string; th-TH: string; tr-TR: string; vi-VN: string; zh-CN: string; zh-TW: string }; name: string })[]; + skinLevels: ({ assetName: string; assetPath: string; id: string; localizedNames: { ar-AE: string; de-DE: string; en-GB: string; en-US: string; es-ES: string; es-MX: string; fr-FR: string; id-ID: string; it-IT: string; ja-JP: string; ko-KR: string; pl-PL: string; pt-BR: string; ru-RU: string; th-TH: string; tr-TR: string; vi-VN: string; zh-CN: string; zh-TW: string }; name: string })[]; + skins: ({ assetName: string; assetPath: string; id: string; localizedNames: { ar-AE: string; de-DE: string; en-GB: string; en-US: string; es-ES: string; es-MX: string; fr-FR: string; id-ID: string; it-IT: string; ja-JP: string; ko-KR: string; pl-PL: string; pt-BR: string; ru-RU: string; th-TH: string; tr-TR: string; vi-VN: string; zh-CN: string; zh-TW: string }; name: string })[]; + sprayLevels: ({ assetName: string; assetPath: string; id: string; localizedNames: { ar-AE: string; de-DE: string; en-GB: string; en-US: string; es-ES: string; es-MX: string; fr-FR: string; id-ID: string; it-IT: string; ja-JP: string; ko-KR: string; pl-PL: string; pt-BR: string; ru-RU: string; th-TH: string; tr-TR: string; vi-VN: string; zh-CN: string; zh-TW: string }; name: string })[]; + sprays: ({ assetName: string; assetPath: string; id: string; localizedNames: { ar-AE: string; de-DE: string; en-GB: string; en-US: string; es-ES: string; es-MX: string; fr-FR: string; id-ID: string; it-IT: string; ja-JP: string; ko-KR: string; pl-PL: string; pt-BR: string; ru-RU: string; th-TH: string; tr-TR: string; vi-VN: string; zh-CN: string; zh-TW: string }; name: string })[]; version: string; } -/** A content item with asset information and localized names. */ export interface ContentItem { - /** Internal asset name. */ assetName: string; - /** Path to the asset resource. */ assetPath: string; - /** Unique identifier for the content item. */ id: string; - /** Localized display names keyed by locale code. */ - localizedNames: { "ar-AE": string; "de-DE": string; "en-GB": string; "en-US": string; "es-ES": string; "es-MX": string; "fr-FR": string; "id-ID": string; "it-IT": string; "ja-JP": string; "ko-KR": string; "pl-PL": string; "pt-BR": string; "ru-RU": string; "th-TH": string; "tr-TR": string; "vi-VN": string; "zh-CN": string; "zh-TW": string }; - /** Display name of the content item. */ + localizedNames: { ar-AE: string; de-DE: string; en-GB: string; en-US: string; es-ES: string; es-MX: string; fr-FR: string; id-ID: string; it-IT: string; ja-JP: string; ko-KR: string; pl-PL: string; pt-BR: string; ru-RU: string; th-TH: string; tr-TR: string; vi-VN: string; zh-CN: string; zh-TW: string }; name: string; } -/** Damage dealt to a specific player in a round. */ export interface Damage { - /** Number of body shots landed. */ bodyshots: number; - /** Total damage dealt. */ damage: number; - /** Number of headshots landed. */ headshots: number; - /** Number of leg shots landed. */ legshots: number; - /** Encrypted PUUID of the player who received the damage. */ receiver: string; } -/** A player's economy state for a round. */ export interface Economy { - /** Armor identifier equipped this round. */ armor: string; - /** Total loadout value in credits. */ loadoutValue: number; - /** Credits remaining after purchases. */ remaining: number; - /** Credits spent this round. */ spent: number; - /** Weapon identifier equipped this round. */ weapon: string; } -/** Information about the finishing blow that killed a player. */ export interface FinishingDamage { - /** Identifier of the item that dealt the finishing damage. */ damageItem: string; - /** Type of damage that killed the player (e.g., "Weapon", "Bomb", "Ability"). */ damageType: string; - /** Whether the kill used the weapon's secondary fire mode. */ isSecondaryFireMode: boolean; } -/** A kill event in a Valorant match round. */ export interface Kill { - /** Encrypted PUUIDs of players who assisted in the kill. */ assistants: string[]; - /** Details about the finishing blow. */ finishingDamage: { damageItem: string; damageType: string; isSecondaryFireMode: boolean }; - /** Encrypted PUUID of the player who made the kill. */ killer: string; - /** Positions and view angles of all players at the time of the kill. */ playerLocations: ({ location: { x: number; y: number }; puuid: string; viewRadians: number })[]; - /** Milliseconds since the game started when the kill occurred. */ timeSinceGameStartMillis: number; - /** Milliseconds since the round started when the kill occurred. */ timeSinceRoundStartMillis: number; - /** Encrypted PUUID of the player who was killed. */ victim: string; - /** Map coordinates where the victim died. */ victimLocation: { x: number; y: number }; } -/** Ranked leaderboard data for a specific competitive act. */ export interface Leaderboard { - /** Unique identifier of the competitive act. */ actId: string; - /** Leaderboard player entries sorted by rank. */ players: ({ competitiveTier: number; gameName: string; leaderboardRank: number; numberOfWins: number; puuid: string; rankedRating: number; tagLine: string })[]; - /** Search query used to filter the leaderboard (empty string if no filter). */ query: string; - /** Shard identifier this leaderboard was retrieved from. */ shard: string; - /** Tier detail information for ranks on this leaderboard. */ tierDetails: ({ })[]; - /** Total number of ranked players on the leaderboard. */ totalPlayers: number; } -/** Localized display names keyed by locale code. */ export interface LocalizedNames { - 'ar-AE': string; - 'de-DE': string; - 'en-GB': string; - 'en-US': string; - 'es-ES': string; - 'es-MX': string; - 'fr-FR': string; - 'id-ID': string; - 'it-IT': string; - 'ja-JP': string; - 'ko-KR': string; - 'pl-PL': string; - 'pt-BR': string; - 'ru-RU': string; - 'th-TH': string; - 'tr-TR': string; - 'vi-VN': string; - 'zh-CN': string; - 'zh-TW': string; + ar-AE: string; + de-DE: string; + en-GB: string; + en-US: string; + es-ES: string; + es-MX: string; + fr-FR: string; + id-ID: string; + it-IT: string; + ja-JP: string; + ko-KR: string; + pl-PL: string; + pt-BR: string; + ru-RU: string; + th-TH: string; + tr-TR: string; + vi-VN: string; + zh-CN: string; + zh-TW: string; } -/** A 2D map coordinate. */ export interface Location { - /** Horizontal position on the map. */ x: number; - /** Vertical position on the map. */ y: number; } -/** Metadata about a Valorant match. */ export interface MatchInfo { - /** Name of the custom game (empty string for non-custom games). */ customGameName: string; - /** Duration of the match in milliseconds. */ gameLengthMillis: number; - /** Game mode played in this match. */ gameMode: 'CLASSIC' | 'ODIN' | 'ARAM' | 'TUTORIAL' | 'URF' | 'DOOMBOTSTEEMO' | 'ONEFORALL' | 'ASCENSION' | 'FIRSTBLOOD' | 'KINGPORO' | 'SIEGE' | 'ASSASSINATE' | 'ARSR' | 'DARKSTAR' | 'STARGUARDIAN' | 'PROJECT' | 'GAMEMODEX' | 'NEXUSBLITZ' | 'ULTBOOK' | 'CHERRY' | 'STRAWBERRY'; - /** Epoch timestamp in milliseconds when the match started. */ gameStartMillis: number; - /** Game client version used for the match. */ gameVersion: string; - /** Whether the match completed normally. */ isCompleted: boolean; - /** Whether this was a ranked match. */ isRanked: boolean; - /** Identifier of the map played. */ mapId: '11' | '12' | '21' | '22' | '30'; - /** Unique match identifier. */ matchId: string; - /** Premier match metadata (empty for non-Premier matches). */ premierMatchInfo: Record[]; - /** Internal provisioning flow identifier. */ provisioningFlowId: string; - /** Queue identifier for the match type. */ queueId: string; - /** Region where the match was played. */ region: string; - /** Season identifier when the match was played. */ seasonId: string; } -/** A player's match history with match references. */ export interface Matchlist { - /** List of match history entries. */ history: ({ gameStartTimeMillis: number; matchId: string; queueId: string })[]; - /** Encrypted PUUID of the player. */ puuid: string; } -/** A single entry in a player's match history. */ export interface MatchlistEntry { - /** Epoch timestamp in milliseconds when the match started. */ gameStartTimeMillis: number; - /** Unique match identifier. */ matchId: string; - /** Queue identifier for the match type. */ queueId: string; } -/** A player in a Valorant match. */ export interface Player { - /** Player's account level. */ accountLevel: number; - /** Identifier of the agent character played. */ characterId: string; - /** Competitive tier at time of the match. */ competitiveTier: number; - /** Player's Riot game name. */ gameName: string; - /** Whether this player was observing the match. */ isObserver: boolean; - /** Identifier of the party the player queued with. */ partyId: string; - /** Identifier of the player card cosmetic equipped. */ playerCard: string; - /** Identifier of the player title cosmetic equipped. */ playerTitle: string; - /** Encrypted PUUID of the player. */ puuid: string; - /** Aggregate performance statistics for the match. */ stats: { abilityCasts: { ability1Casts: number; ability2Casts: number; grenadeCasts: number; ultimateCasts: number }; assists: number; deaths: number; kills: number; playtimeMillis: number; roundsPlayed: number; score: number }; - /** Player's Riot tag line. */ tagLine: string; - /** Team identifier the player belongs to. */ teamId: string; } -/** Player position and view angle at a moment in time. */ export interface PlayerLocations { - /** Map coordinates of the player. */ location: { x: number; y: number }; - /** Encrypted PUUID of the player. */ puuid: string; - /** Direction the player was looking in radians. */ viewRadians: number; } -/** A player's detailed statistics for a single round. */ export interface PlayerRoundStats { - /** Ability effects triggered during the round. */ ability: { ability1Effects: string; ability2Effects: string; grenadeEffects: string; ultimateEffects: string }; - /** Damage dealt to other players during the round. */ damage: ({ bodyshots: number; damage: number; headshots: number; legshots: number; receiver: string })[]; - /** Economy state for the round (credits, loadout). */ economy: { armor: string; loadoutValue: number; remaining: number; spent: number; weapon: string }; - /** Kills made during the round. */ kills: ({ assistants: string[]; finishingDamage: { damageItem: string; damageType: string; isSecondaryFireMode: boolean }; killer: string; playerLocations: ({ location: { x: number; y: number }; puuid: string; viewRadians: number })[]; timeSinceGameStartMillis: number; timeSinceRoundStartMillis: number; victim: string; victimLocation: { x: number; y: number } })[]; - /** Encrypted PUUID of the player. */ puuid: string; - /** Score earned during the round. */ score: number; } -/** Aggregate performance statistics for a player in a match. */ export interface PlayerStats { - /** Total ability casts across all rounds. */ abilityCasts: { ability1Casts: number; ability2Casts: number; grenadeCasts: number; ultimateCasts: number }; - /** Total assists across all rounds. */ assists: number; - /** Total deaths across all rounds. */ deaths: number; - /** Total kills across all rounds. */ kills: number; - /** Total playtime in milliseconds. */ playtimeMillis: number; - /** Number of rounds played. */ roundsPlayed: number; - /** Total score across all rounds. */ score: number; } -/** Recently completed match IDs for a queue. */ export interface RecentMatches { - /** Server time when this data was retrieved (epoch milliseconds). */ currentTime: number; - /** List of recently completed match IDs. */ matchIds: string[]; } -/** Detailed result of a single round in a match. */ export interface RoundResult { - /** Encrypted PUUID of the player who defused the bomb (empty if not defused). */ bombDefuser: string; - /** Encrypted PUUID of the player who planted the bomb (empty if not planted). */ bombPlanter: string; - /** Map coordinates where the bomb was defused. */ defuseLocation: { x: number; y: number }; - /** Player positions when the bomb was defused. */ defusePlayerLocations: ({ location: { x: number; y: number }; puuid: string; viewRadians: number })[]; - /** Milliseconds into the round when the bomb was defused. */ defuseRoundTime: number; - /** Map coordinates where the bomb was planted. */ plantLocation: { x: number; y: number }; - /** Player positions when the bomb was planted. */ plantPlayerLocations: ({ location: { x: number; y: number }; puuid: string; viewRadians: number })[]; - /** Milliseconds into the round when the bomb was planted. */ plantRoundTime: number; - /** Bomb site where the spike was planted (e.g., "A", "B", "C"). */ plantSite: string; - /** Per-player detailed statistics for this round. */ playerStats: ({ ability: { ability1Effects: string; ability2Effects: string; grenadeEffects: string; ultimateEffects: string }; damage: ({ bodyshots: number; damage: number; headshots: number; legshots: number; receiver: string })[]; economy: { armor: string; loadoutValue: number; remaining: number; spent: number; weapon: string }; kills: ({ assistants: string[]; finishingDamage: { damageItem: string; damageType: string; isSecondaryFireMode: boolean }; killer: string; playerLocations: ({ location: { x: number; y: number }; puuid: string; viewRadians: number })[]; timeSinceGameStartMillis: number; timeSinceRoundStartMillis: number; victim: string; victimLocation: { x: number; y: number } })[]; puuid: string; score: number })[]; - /** Visual ceremony played at end of round (e.g., "CeremonyDefault"). */ roundCeremony: string; - /** Zero-based round number. */ roundNum: number; - /** Human-readable round result description. */ roundResult: string; - /** Machine-readable round result code. */ roundResultCode: string; - /** Team identifier of the winning team. */ winningTeam: string; - /** Role of the winning team in this round (e.g., "attack", "defense"). */ winningTeamRole: string; } -/** A platform status entry (incident or maintenance). */ export interface Status { - /** Timestamp when this status entry will be archived. */ archive_at: string; - /** Timestamp when this status entry was created. */ created_at: string; - /** Unique numeric identifier. */ id: number; - /** Severity level of the incident (e.g., "info", "warning", "critical"). */ incident_severity: string; - /** Current maintenance status (e.g., "scheduled", "in_progress", "complete"). */ maintenance_status: string; - /** Affected platform identifiers. */ platforms: string[]; - /** Localized title strings for this status entry. */ titles: ({ content: string; locale: string })[]; - /** Timestamp when this status entry was last updated. */ updated_at: string; - /** Chronological updates to this status entry. */ updates: ({ author: string; created_at: string; id: number; publish: boolean; publish_locations: string[]; translations: ({ content: string; locale: string })[]; updated_at: string })[]; } -/** A team in a Valorant match. */ export interface Team { - /** Points scored by the team. */ numPoints: number; - /** Total rounds played by the team. */ roundsPlayed: number; - /** Number of rounds won by the team. */ roundsWon: number; - /** Team identifier (e.g., "Blue", "Red"). */ teamId: string; - /** Whether this team won the match. */ won: boolean; } -/** Tier detail information for ranked leaderboards. */ export interface Tier { } -/** A single update to a platform status entry. */ export interface Update { - /** Author of the update. */ author: string; - /** Timestamp when the update was created. */ created_at: string; - /** Unique numeric identifier for the update. */ id: number; - /** Whether the update should be publicly visible. */ publish: boolean; - /** Where the update should be published. */ publish_locations: string[]; - /** Localized translations of the update content. */ translations: ({ content: string; locale: string })[]; - /** Timestamp when the update was last modified. */ updated_at: string; } -/** Complete data for a Valorant match including players, rounds, and teams. */ export interface ValMatch { - /** Coaches participating in the match (Premier/tournament only). */ coaches: ({ puuid: string; teamId: string })[]; - /** Match metadata including mode, map, timing, and identifiers. */ matchInfo: { customGameName: string; gameLengthMillis: number; gameMode: 'CLASSIC' | 'ODIN' | 'ARAM' | 'TUTORIAL' | 'URF' | 'DOOMBOTSTEEMO' | 'ONEFORALL' | 'ASCENSION' | 'FIRSTBLOOD' | 'KINGPORO' | 'SIEGE' | 'ASSASSINATE' | 'ARSR' | 'DARKSTAR' | 'STARGUARDIAN' | 'PROJECT' | 'GAMEMODEX' | 'NEXUSBLITZ' | 'ULTBOOK' | 'CHERRY' | 'STRAWBERRY'; gameStartMillis: number; gameVersion: string; isCompleted: boolean; isRanked: boolean; mapId: '11' | '12' | '21' | '22' | '30'; matchId: string; premierMatchInfo: Record[]; provisioningFlowId: string; queueId: string; region: string; seasonId: string }; - /** All players in the match with their stats and agent selections. */ players: ({ accountLevel: number; characterId: string; competitiveTier: number; gameName: string; isObserver: boolean; partyId: string; playerCard: string; playerTitle: string; puuid: string; stats: { abilityCasts: { ability1Casts: number; ability2Casts: number; grenadeCasts: number; ultimateCasts: number }; assists: number; deaths: number; kills: number; playtimeMillis: number; roundsPlayed: number; score: number }; tagLine: string; teamId: string })[]; - /** Detailed results for each round of the match. */ roundResults: ({ bombDefuser: string; bombPlanter: string; defuseLocation: { x: number; y: number }; defusePlayerLocations: ({ location: { x: number; y: number }; puuid: string; viewRadians: number })[]; defuseRoundTime: number; plantLocation: { x: number; y: number }; plantPlayerLocations: ({ location: { x: number; y: number }; puuid: string; viewRadians: number })[]; plantRoundTime: number; plantSite: string; playerStats: ({ ability: { ability1Effects: string; ability2Effects: string; grenadeEffects: string; ultimateEffects: string }; damage: ({ bodyshots: number; damage: number; headshots: number; legshots: number; receiver: string })[]; economy: { armor: string; loadoutValue: number; remaining: number; spent: number; weapon: string }; kills: ({ assistants: string[]; finishingDamage: { damageItem: string; damageType: string; isSecondaryFireMode: boolean }; killer: string; playerLocations: ({ location: { x: number; y: number }; puuid: string; viewRadians: number })[]; timeSinceGameStartMillis: number; timeSinceRoundStartMillis: number; victim: string; victimLocation: { x: number; y: number } })[]; puuid: string; score: number })[]; roundCeremony: string; roundNum: number; roundResult: string; roundResultCode: string; winningTeam: string; winningTeamRole: string })[]; - /** Teams in the match with their scores and win status. */ teams: ({ numPoints: number; roundsPlayed: number; roundsWon: number; teamId: string; won: boolean })[]; } -/** Platform status data for a Valorant shard. */ export interface ValPlatformData { - /** Shard identifier (e.g., "NA", "EU"). */ id: string; - /** Active incidents affecting the platform. */ incidents: ({ archive_at: string; created_at: string; id: number; incident_severity: string; maintenance_status: string; platforms: string[]; titles: ({ content: string; locale: string })[]; updated_at: string; updates: ({ author: string; created_at: string; id: number; publish: boolean; publish_locations: string[]; translations: ({ content: string; locale: string })[]; updated_at: string })[] })[]; - /** Supported locale codes. */ locales: string[]; - /** Scheduled or active maintenance windows. */ maintenances: ({ archive_at: string; created_at: string; id: number; incident_severity: string; maintenance_status: string; platforms: string[]; titles: ({ content: string; locale: string })[]; updated_at: string; updates: ({ author: string; created_at: string; id: number; publish: boolean; publish_locations: string[]; translations: ({ content: string; locale: string })[]; updated_at: string })[] })[]; - /** Display name of the platform. */ name: string; } diff --git a/scripts/schemas/lol.champion-mastery-v4.schema.json b/scripts/schemas/lol.champion-mastery-v4.schema.json index 2b0a36b..2dd1648 100644 --- a/scripts/schemas/lol.champion-mastery-v4.schema.json +++ b/scripts/schemas/lol.champion-mastery-v4.schema.json @@ -30,9 +30,8 @@ }, "milestoneGrades": { "items": { - "type": "unknown" + "type": "string" }, - "optional": true, "type": "array" }, "nextSeasonMilestone": { @@ -42,12 +41,7 @@ }, "requireGradeCounts": { "fields": { - "A-": { - "optional": true, - "type": "integer" - }, "S-": { - "optional": true, "type": "integer" } }, diff --git a/scripts/schemas/lol.lol-challenges-v1.schema.json b/scripts/schemas/lol.lol-challenges-v1.schema.json index 1d77e37..0793f83 100644 --- a/scripts/schemas/lol.lol-challenges-v1.schema.json +++ b/scripts/schemas/lol.lol-challenges-v1.schema.json @@ -2404,7 +2404,7 @@ "type": "number" }, "CHALLENGER": { - "type": "integer" + "type": "number" }, "DIAMOND": { "type": "number" @@ -3812,7 +3812,7 @@ "type": "number" }, "CHALLENGER": { - "type": "integer" + "type": "number" }, "DIAMOND": { "type": "number" @@ -8100,7 +8100,7 @@ "type": "number" }, "CHALLENGER": { - "type": "integer" + "type": "number" }, "DIAMOND": { "type": "number" diff --git a/scripts/schemas/lol.lol-status-v4.schema.json b/scripts/schemas/lol.lol-status-v4.schema.json index 47c7a80..48fdaf5 100644 --- a/scripts/schemas/lol.lol-status-v4.schema.json +++ b/scripts/schemas/lol.lol-status-v4.schema.json @@ -21,92 +21,7 @@ }, "maintenances": { "items": { - "fields": { - "archive_at": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "id": { - "type": "integer" - }, - "incident_severity": { - "nullable": true, - "type": "unknown" - }, - "maintenance_status": { - "type": "string" - }, - "platforms": { - "items": { - "type": "string" - }, - "type": "array" - }, - "titles": { - "items": { - "fields": { - "content": { - "type": "string" - }, - "locale": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "updated_at": { - "nullable": true, - "type": "unknown" - }, - "updates": { - "items": { - "fields": { - "author": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "id": { - "type": "integer" - }, - "publish": { - "type": "boolean" - }, - "publish_locations": { - "items": { - "type": "string" - }, - "type": "array" - }, - "translations": { - "items": { - "fields": { - "content": { - "type": "string" - }, - "locale": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "updated_at": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" + "type": "unknown" }, "type": "array" }, diff --git a/scripts/schemas/lol.match-v5.schema.json b/scripts/schemas/lol.match-v5.schema.json index 9ce8846..b149963 100644 --- a/scripts/schemas/lol.match-v5.schema.json +++ b/scripts/schemas/lol.match-v5.schema.json @@ -107,7 +107,7 @@ "type": "integer" }, "HealFromMapSources": { - "type": "integer" + "type": "number" }, "InfernalScalePickup": { "type": "integer" @@ -158,7 +158,7 @@ "type": "integer" }, "bountyGold": { - "type": "number" + "type": "integer" }, "buffsStolen": { "type": "integer" @@ -195,6 +195,7 @@ "type": "integer" }, "earliestDragonTakedown": { + "optional": true, "type": "number" }, "earlyLaningPhaseGoldExpAdvantage": { @@ -421,6 +422,10 @@ "soloKills": { "type": "integer" }, + "soloTurretsLategame": { + "optional": true, + "type": "integer" + }, "stealthWardsPlaced": { "type": "integer" }, @@ -463,10 +468,6 @@ "teamRiftHeraldKills": { "type": "integer" }, - "teleportTakedowns": { - "optional": true, - "type": "integer" - }, "tookLargeDamageSurvived": { "type": "integer" }, @@ -1009,35 +1010,6 @@ }, "type": "array" }, - "feats": { - "fields": { - "EPIC_MONSTER_KILL": { - "fields": { - "featState": { - "type": "integer" - } - }, - "type": "object" - }, - "FIRST_BLOOD": { - "fields": { - "featState": { - "type": "integer" - } - }, - "type": "object" - }, - "FIRST_TURRET": { - "fields": { - "featState": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, "objectives": { "fields": { "atakhan": {