diff --git a/server-new/app/Services/Jax/src/Endpoints/MatchEndpoint.ts b/server-new/app/Services/Jax/src/Endpoints/MatchEndpoint.ts index 26cc39a..c3676b8 100644 --- a/server-new/app/Services/Jax/src/Endpoints/MatchEndpoint.ts +++ b/server-new/app/Services/Jax/src/Endpoints/MatchEndpoint.ts @@ -2,6 +2,213 @@ import { RiotRateLimiter } from '@fightmegg/riot-rate-limiter' import { JaxConfig } from '../../JaxConfig' import JaxRequest from '../JaxRequest' +export interface MatchDto { + gameId: number, + participantIdentities: ParticipantIdentityDto[], + queueId: number, + gameType: string, + gameDuration: number, + teams: TeamStatsDto[], + platformId: string + gameCreation: number, + seasonId: number, + gameVersion: string, + mapId: number, + gameMode: string, + participants: ParticipantDto[], +} + +export interface ParticipantIdentityDto { + participantId: number, + player: PlayerDto +} + +export interface PlayerDto { + profileIcon: number, + accountId: string, + matchHistoryUri: string, + currentAccountId: string, + currentPlatformId: string, + summonerName: string, + summonerId: string, + platformId: string, +} + +export interface TeamStatsDto { + towerKills: number, + riftHeraldKills: number, + firstBlood: boolean, + inhibitorKills: number, + bans: TeamBansDto[], + firstBaron: boolean, + firstDragon: boolean, + dominionVictoryScore: number, + dragonKills: number, + baronKills: number, + firstInhibitor: boolean + firstTower: boolean + vilemawKills: number, + firstRiftHerald: boolean + teamId: number, // 100 for blue side. 200 for red side. + win: string +} + +export interface TeamBansDto { + championId: number, + pickTurn: number, +} + +export interface ParticipantDto { + participantId: number, + championId: number, + runes: RuneDto[], + stats: ParticipantStatsDto, + teamId: number, + timeline: ParticipantTimelineDto, + spell1Id: number, + spell2Id: number, + highestAchievedSeasonTier?: + 'CHALLENGER' | 'MASTER' | 'DIAMOND' | 'PLATINUM' | 'GOLD' | 'SILVER' | 'BRONZE' | 'UNRANKED', + masteries: MasteryDto[] +} + +export interface RuneDto { + runeId: number, + rank: number, +} + +export interface ParticipantStatsDto { + item0: number, + item2: number, + totalUnitsHealed: number, + item1: number, + largestMultiKill: number, + goldEarned: number, + firstInhibitorKill: boolean, + physicalDamageTaken: number, + nodeNeutralizeAssist: number, + totalPlayerScore: number, + champLevel: number, + damageDealtToObjectives: number, + totalDamageTaken: number, + neutralMinionsKilled: number, + deaths: number, + tripleKills: number, + magicDamageDealtToChampions: number, + wardsKilled: number, + pentaKills: number, + damageSelfMitigated: number, + largestCriticalStrike: number, + nodeNeutralize: number, + totalTimeCrowdControlDealt: number, + firstTowerKill: boolean + magicDamageDealt: number, + totalScoreRank: number, + nodeCapture: number, + wardsPlaced: number, + totalDamageDealt: number, + timeCCingOthers: number, + magicalDamageTaken: number, + largestKillingSpree: number, + totalDamageDealtToChampions: number, + physicalDamageDealtToChampions: number, + neutralMinionsKilledTeamJungle: number, + totalMinionsKilled: number, + firstInhibitorAssist: boolean + visionWardsBoughtInGame: number, + objectivePlayerScore: number, + kills: number, + firstTowerAssist: boolean + combatPlayerScore: number, + inhibitorKills: number, + turretKills: number, + participantId: number, + trueDamageTaken: number, + firstBloodAssist: boolean + nodeCaptureAssist: number, + assists: number, + teamObjective: number, + altarsNeutralized: number, + goldSpent: number, + damageDealtToTurrets: number, + altarsCaptured: number, + win: boolean, + totalHeal: number, + unrealKills: number, + visionScore: number, + physicalDamageDealt: number, + firstBloodKill: boolean, + longestTimeSpentLiving: number, + killingSprees: number, + sightWardsBoughtInGame: number, + trueDamageDealtToChampions: number, + neutralMinionsKilledEnemyJungle: number, + doubleKills: number, + trueDamageDealt: number, + quadraKills: number, + item4: number, + item3: number, + item6: number, + item5: number, + playerScore0: number, + playerScore1: number, + playerScore2: number, + playerScore3: number, + playerScore4: number, + playerScore5: number, + playerScore6: number, + playerScore7: number, + playerScore8: number, + playerScore9: number, + perk0: number, + perk0Var1: number, + perk0Var2: number, + perk0Var3: number, + perk1: number, + perk1Var1: number, + perk1Var2: number, + perk1Var3: number, + perk2: number, + perk2Var1: number, + perk2Var2: number, + perk2Var3: number, + perk3: number, + perk3Var1: number, + perk3Var2: number, + perk3Var3: number, + perk4: number, + perk4Var1: number, + perk4Var2: number, + perk4Var3: number, + perk5: number, + perk5Var1: number, + perk5Var2: number, + perk5Var3: number, + perkPrimaryStyle: number, + perkSubStyle: number, + statPerk0: number, + statPerk1: number, + statPerk2: number, +} + +export interface ParticipantTimelineDto { + participantId: number, + csDiffPerMinDeltas: { [index: string]: number }, + damageTakenPerMinDeltas: { [index: string]: number }, + role: 'DUO' | 'NONE' | 'SOLO' | 'DUO_CARRY' | 'DUO_SUPPORT', + damageTakenDiffPerMinDeltas: { [index: string]: number }, + xpPerMinDeltas: { [index: string]: number }, + xpDiffPerMinDeltas: { [index: string]: number }, + lane: 'MID' | 'MIDDLE' | 'TOP' | 'JUNGLE' | 'BOT' | 'BOTTOM', + creepsPerMinDeltas: { [index: string]: number }, + goldPerMinDeltas: { [index: string]: number }, +} + +export interface MasteryDto { + rank: number, + masteryId: number, +} + export default class MatchEndpoint { private config: JaxConfig private limiter: RiotRateLimiter @@ -13,7 +220,7 @@ export default class MatchEndpoint { this.get = this.get.bind(this) } - public get (matchID: number, region: string) { + public get (matchID: number, region: string): Promise { return new JaxRequest( region, this.config,