UNPKG

royale-api-types

Version:
773 lines (770 loc) 26.1 kB
/** * Values of an object */ declare type ValueOf<T> = T extends (infer R)[] | Map<any, infer R> ? R : T[keyof T]; /** * A list of API routes */ declare const Routes: { /** * Retrieve clan's clan war log. * @param clanTag - Tag of the clan * @deprecated **This API endpoint has been temporarily disabled, possibilities to bring it back are being investigated. * Use {@link Routes.RiverRaceLog} instead** */ readonly WarLog: (clanTag: string) => `/clans/${string}/warlog`; /** * Search all clans by name and/or filtering the results using various criteria. * At least one filtering criteria must be defined and if name is used as part of search, it is required to be at least three characters long. * It is not possible to specify ordering for results so clients should not rely on any specific ordering as that may change in the future releases of the API. */ readonly Clans: () => "/clans"; /** * Retrieve clan's river race log. * @param clanTag - Tag of the clan */ readonly RiverRaceLog: (clanTag: string) => `/clans/${string}/riverracelog`; /** * Get information about a single clan by clan tag. * Clan tags can be found using clan search operation. * @param clanTag - Tag of the clan */ readonly Clan: (clanTag: string) => `/clans/${string}`; /** * List clan members. * @param clanTag - Tag of the clan */ readonly ClanMembers: (clanTag: string) => `/clans/${string}/members`; /** * Retrieve information about clan's current river race. * @param clanTag - Tag of the clan */ readonly CurrentRiverRace: (clanTag: string) => `/clans/${string}/currentriverrace`; /** * Get information about a single player by player tag. * Player tags can be found either in game or by from clan member lists. * @param playerTag - Tag of the player */ readonly Player: (playerTag: string) => `/players/${string}`; /** * Get list of reward chests that the player will receive next in the game. * @param playerTag - Tag of the player */ readonly UpcomingChests: (playerTag: string) => `/players/${string}/upcomingchests`; /** * Get list of recent battles for a player. * @param playerTag - Tag of the player */ readonly BattleLog: (playerTag: string) => `/players/${string}/battlelog`; /** * Get list of available cards. */ readonly Cards: () => "/cards"; /** * Search all tournaments by name. * It is not possible to specify ordering for results so clients should not rely on any specific ordering as that may change in the future releases of the API. */ readonly Tournaments: () => "/tournaments"; /** * Get information about a single tournament by a tournament tag. * @param tournamentTag - Tag of the tournament to retrieve */ readonly Tournament: (tournamentTag: string) => `/tournaments/${string}`; /** * Get clan rankings for a specific location. * @param locationId - Identifier of the location to retrieve */ readonly ClanRankings: (locationId: number | `${number}`) => `/locations/${number}/rankings/clans`; /** * Get player rankings for a specific location. * @param locationId - Identifier of the location to retrieve */ readonly PlayerRankings: (locationId: number | `${number}`) => `/locations/${number}/rankings/players`; /** * Get clan war rankings for a specific location. * @param locationId - Identifier of the location to retrieve */ readonly ClanWarRankings: (locationId: number | `${number}`) => `/locations/${number}/rankings/clanwars`; /** * Get top player league season. * @param seasonId - Identifier of the season to retrieve */ readonly Season: (seasonId: string) => `/locations/global/seasons/${string}`; /** * Get top player rankings for a season. * @param seasonId - Identifier of the season to retrieve */ readonly TopPlayerRankings: (seasonId: string) => `/locations/global/seasons/${string}/rankings/players`; /** * Lists top player league seasons. */ readonly Seasons: () => "/locations/global/seasons"; /** * List locations. */ readonly Locations: () => "/locations"; /** * Get information about specific location. * @param locationId - Identifier of the location to retrieve */ readonly Location: (locationId: number | `${number}`) => `/locations/${number}`; /** * Get global tournament rankings. * @param tournamentTag - Tag of the tournament to retrieve */ readonly GlobalTournamentRankings: (tournamentTag: string) => `/locations/global/rankings/tournaments/${string}`; /** * Get current and upcoming challenges. * Challenges are returned as chains. * Chains are either of type singleChallenge or challengeChain. * Possible types for prizes are: none, cardStack, chest, cardStackRandom, resource, tradeToken, consumable. */ readonly Challenges: () => "/challenges"; /** * Get list of global tournaments. */ readonly GlobalTournaments: () => "/globaltournaments"; }; declare type Routes = { [K in keyof typeof Routes]: ReturnType<typeof Routes[K]>; }; /** * The path for a request to the API */ declare type Path = ValueOf<Routes>; /** * The response type of the API for every route. */ declare type ResponseType<T extends ValueOf<Routes>> = T extends Routes["WarLog"] ? APIClanWarLog : T extends Routes["Clans"] ? APIClanList : T extends Routes["RiverRaceLog"] ? APIRiverRaceLog : T extends Routes["ClanMembers"] ? APIClanMemberList : T extends Routes["CurrentRiverRace"] ? APICurrentRiverRace : T extends Routes["UpcomingChests"] ? APIUpcomingChests : T extends Routes["BattleLog"] ? APIBattleList : T extends Routes["Cards"] ? APIItemList : T extends Routes["Tournaments"] ? APITournamentHeaderList : T extends Routes["ClanRankings"] ? APIClanRankingList : T extends Routes["PlayerRankings"] ? APIPlayerRankingList : T extends Routes["ClanWarRankings"] ? APIClanRankingList : T extends Routes["TopPlayerRankings"] ? APIPlayerRankingList : T extends Routes["Seasons"] ? APILeagueSeasonList : T extends Routes["Locations"] ? APILocationList : T extends Routes["Challenges"] ? APIChallengeChainsList : T extends Routes["GlobalTournaments"] ? APILadderTournamentList : T extends Routes["Clan"] ? APIClan : T extends Routes["Player"] ? APIPlayer : T extends Routes["Tournament"] ? APITournament : T extends Routes["Season"] ? APILeagueSeason : T extends Routes["Location"] ? APILocation : T extends Routes["GlobalTournamentRankings"] ? APILadderTournamentRankingList : never; declare type integer = number; declare type APILadderTournamentRankingList = APIList<APILadderTournamentRanking>; interface APILadderTournamentRanking { clan: APIPlayerRankingClan; wins: integer; losses: integer; tag: string; name: string; rank: integer; previousRank: integer; } interface APIPlayerRankingClan { badgeId: integer; tag: string; name: string; } interface APICurrentRiverRace { state: APIRiverRaceState; clan: APIRiverRaceClan; clans: APIRiverRaceClanList; collectionEndTime?: string; warEndTime?: string; sectionIndex: integer; periodIndex: integer; periodType: APIRiverRacePeriodType; periodLogs: APIPeriodLogList; } declare type APIPeriodLogList = APIPeriodLog[]; interface APIPeriodLog { items: PeriodLogEntryList; periodIndex: integer; } declare type PeriodLogEntryList = APIPeriodLogEntry[]; interface APIPeriodLogEntry { clan: APIPeriodLogEntryClan; pointsEarned: integer; progressStartOfDay: integer; progressEndOfDay: integer; endOfDayRank: integer; progressEarned: integer; numOfDefensesRemaining: integer; progressEarnedFromDefenses: integer; } interface APIPeriodLogEntryClan { tag: string; } declare type APIRiverRaceClanList = APIRiverRaceClan[]; interface APIRiverRaceClan { tag: string; clanScore: integer; badgeId: integer; name: string; fame: integer; repairPoints: integer; finishTime?: string; participants: APIRiverRaceParticipantList; periodPoints: integer; } declare type APIRiverRaceParticipantList = APIRiverRaceParticipant[]; interface APIRiverRaceParticipant { tag: string; name: string; fame: integer; repairPoints: integer; boatAttacks: integer; decksUsed: integer; decksUsedToday: integer; } interface APILocation { localizedName?: string; id: integer; name: string; isCountry: boolean; countryCode?: string; } interface Replay { replayInfo: string; replayData: APIJsonNode; version: APIVersion; tag: string; battleTime: string; viewCount: integer; shareCount: integer; } interface APIVersion { build: integer; major: integer; content: integer; } interface APIJsonNode { } declare type APILocationList = APIList<APILocation>; declare type APILeagueSeasonList = APIList<APILeagueSeason>; interface APILeagueSeason { id: string; } declare type APIChallengeChainsList = APIChallengeChain[]; interface APIChallengeChain { title?: string; type: APIChallengeChainType; startTime: string; endTime: string; challenges: APIChallengeList; } declare enum APIChallengeChainType { SINGLE_CHALLENGE = "singleChallenge", CHAIN_CHALLENGE = "chainChallenge" } declare type APIChallengeList = APIChallenge[]; interface APIChallenge { description: string; name: string; id: integer; winMode: string; casual: boolean; maxLosses: integer; maxWins: integer; iconUrl: string; gameMode: APIChallengeGameMode; prizes: APISurvivalMilestoneRewardList; } declare type APISurvivalMilestoneRewardList = APISurvivalMilestoneReward[]; interface APISurvivalMilestoneReward { chest?: string; rarity?: APISurvivalMilestoneRewardRarity; resource?: APISurvivalMilestoneRewardResource; type: APISurvivalMilestoneRewardType | null; amount?: integer; card?: APIItem & { name: string | null; }; consumableName?: string; wins?: integer; } declare enum APISurvivalMilestoneRewardRarity { COMMON = "common", RARE = "rare", EPIC = "epic", LEGENDARY = "legendary", HERO = "hero" } declare enum APISurvivalMilestoneRewardResource { GOLD = "gold", UNKNOWN = "unknown" } declare enum APISurvivalMilestoneRewardType { NONE = "none", CARD_STACK = "cardStack", CHEST = "chest", CARD_STACK_RANDOM = "cardStackRandom", RESOURCE = "resource", TRADE_TOKEN = "tradeToken", CONSUMABLE = "consumable" } interface APIItem { iconUrls: { medium: string; }; name: string; id: integer; maxLevel: integer; } interface APIChallengeGameMode { id: integer; name: string; } declare type APIClanMemberList = APIList<APIClanMember>; interface APIClanMember { clanChestPoints: integer; arena: APIArena; lastSeen: string; tag: string; name: string; role: APIClanMemberRole; expLevel: integer; trophies: integer; clanRank: integer; previousClanRank: integer; donations: integer; donationsReceived: integer; } declare enum APIClanMemberRole { NOT_MEMBER = "notMember", MEMBER = "member", LEADER = "leader", ADMIN = "admin", COLEADER = "coLeader" } interface APIArena { name: string; id: integer; } declare type APILadderTournamentList = APIList<APILadderTournament>; interface APILadderTournament { minExpLevel: integer; maxLosses: integer; tournamentLevel: integer; gameMode: Omit<APIGameMode, "name">; milestoneRewards: APISurvivalMilestoneRewardList; freeTierRewards: APISurvivalMilestoneRewardList; tag: string; title: string; startTime: string; endTime: string; topRankReward: APISurvivalMilestoneRewardList; maxTopRewardRank: integer; } interface APIGameMode { id: integer; name: string; } declare type APIPlayerRankingList = APIList<APIPlayerRanking>; interface APIPlayerRanking { clan: APIPlayerRankingClan; arena?: APIArena; tag: string; name: string; expLevel: integer; rank: integer; previousRank?: integer; trophies: integer; } interface APIVerifyTokenRequest { token: string; } interface APIVerifyTokenResponse { tag: string; token: string; status: string; } interface APIClan { memberList: APIClanMember[]; tag: string; clanScore: integer; clanWarTrophies: integer; requiredTrophies: integer; donationsPerWeek: integer; badgeId: integer; clanChestStatus: APIClanChestStatus; clanChestLevel: integer; clanChestMaxLevel: integer; name: string; location: APILocation; type: APIClanType; members: integer; description: string; clanChestPoints?: integer; } declare enum APIClanChestStatus { INACTIVE = "inactive", ACTIVE = "active", COMPLETED = "completed", UNKNOWN = "unknown" } declare enum APIClanType { OPEN = "open", INVITE_ONLY = "inviteOnly", CLOSED = "closed" } interface APIMatch { invites: unknown; state: APIMatchState; startTime: string; battle: APIBattle; tag: string; } declare enum APIMatchState { PENDING = "pending", CANCELLED = "cancelled", TIMED_OUT = "timedOut", IN_PROGRESS = "inProgress", COMPLETE = "complete", FAILED = "failed" } interface APIBattle { deckSelection: APIBattleDeckSelection; challengeWinCountBefore: integer; boatBattleSide: string; newTowersDestroyed: integer; prevTowersDestroyed: integer; remainingTowers: integer; boatBattleWon: boolean; type: APIBattleType; opponent: APIPlayerBattleDataList; team: APIPlayerBattleDataList; gameMode: APIGameMode; arena: APIArena; battleTime: string; challengeId: integer; tournamentTag: string; challengeTitle: string; isLadderTournament: boolean; isHostedMatch: boolean; } declare enum APIBattleDeckSelection { COLLECTION = "collection", DRAFT = "draft", DRAFT_COMPETITIVE = "draftCompetitive", PREDEFINED = "predefined", EVENT_DECK = "eventDeck", PICK = "pick", WARDECK_PICK = "wardeckPick", UNKNOWN = "unknown" } declare enum APIBattleType { PVP = "pvp", PVE = "pve", CLANMATE = "clanmate", TOURNAMENT = "tournament", FRIENDLY = "friendly", SURVIVAL = "survival", PVP2v2 = "pvp2v2", CLANMATE2v2 = "clanmate2v2", CHALLENGE2v2 = "challenge2v2", CLANWAR_COLLECTION_DAY = "clanwarCollectionDay", CLANWAR_WAR_DAY = "clanwarWarDay", CASUAL_1V1 = "casual1v1", CASUAL_2V2 = "casual2v2", BOAT_BATTLE = "boatBattle", BOAT_BATTLE_PRACTICE = "boatBattlePractice", RIVER_RACE_PVP = "riverRacePvp", RIVER_RACE_DUEL = "riverRaceDuel", RIVER_RACE_DUEL_COLOSSEUM = "riverRaceDuelColosseum", UNKNOWN = "unknown" } declare type APIPlayerBattleDataList = APIPlayerBattleData[]; interface APIPlayerBattleData { clan?: APIPlayerClan; cards: APIPlayerItemLevelList; tag: string; name: string; startingTrophies?: integer; trophyChange?: integer; crowns?: integer; kingTowerHitPoints?: integer; princessTowersHitPoints?: APIIntegerList; } declare type APIIntegerList = integer[]; declare type APIPlayerItemLevelList = APIPlayerItemLevel[]; interface APIPlayerItemLevel { id: integer; count?: integer; level: integer; starLevel?: integer; name: string; maxLevel: integer; iconUrls: { large?: string; medium: string; }; } interface APIPlayerClan { badgeId: integer; tag: string; name: string; } interface APICancelMatchResponse { success: boolean; } declare type APIBattleList = APIBattle[]; interface APICurrentClanWar { state: APICurrentClanWarState; clan: APIClanWarClan; participants: APIClanWarParticipantList; clans: APIClanWarClanList; collectionEndTime: string; warEndTime: string; } declare enum APICurrentClanWarState { CLAN_NOT_FOUND = "clanNotFound", ACCESS_DENIED = "accessDenied", NOT_IN_WAR = "notInWar", COLLECTION_DAY = "collectionDay", MATCHMAKING = "matchmaking", WAR_DAY = "warDay", ENDED = "ended" } declare type APIClanWarClanList = APIClanWarClan[]; interface APIClanWarClan { tag: string; clanScore: integer; badgeId: integer; crowns: integer; name: string; participants: integer; battlesPlayed: integer; wins: integer; } declare type APIClanWarParticipantList = APIClanWarParticipant[]; interface APIClanWarParticipant { tag: string; name: string; cardsEarned: integer; battlesPlayed: integer; wins: integer; collectionDayBattlesPlayed: integer; numberOfBattles: integer; } declare type APIRiverRaceLog = APIList<APIRiverRaceLogEntry>; interface APIRiverRaceLogEntry { standings: APIRiverRaceStandingList; seasonId: integer; createdDate: string; sectionIndex: integer; } declare type APIRiverRaceStandingList = APIRiverRaceStanding[]; interface APIRiverRaceStanding { rank: integer; trophyChange: integer; clan: APIRiverRaceClan; } interface APITournament { membersList: APITournamentMemberList; status: APITournamentStatus; preparationDuration: integer; createdTime: string; startedTime: string; endedTime: string; firstPlaceCardPrize: integer; gameMode: Omit<APIGameMode, "name">; type: APITournamentType; duration: integer; tag: string; creatorTag: string; name: string; description: string; capacity: integer; maxCapacity: integer; levelCap: integer; } declare enum APITournamentStatus { IN_PREPARATION = "inPreparation", IN_PROGRESS = "inProgress", ENDED = "ended", UNKNOWN = "unknown" } declare enum APITournamentType { OPEN = "open", PASSWORD_PROTECTED = "passwordProtected", UNKNOWN = "unknown" } declare type APITournamentMemberList = APITournamentMember[]; interface APITournamentMember { rank: integer; clan: APIPlayerClan; previousRank?: integer; tag: string; name: string; score: integer; } declare type APITournamentHeaderList = APIList<APITournamentHeader>; interface APITournamentHeader { status: APITournamentHeaderStatus; preparationDuration: integer; createdTime: string; firstPlaceCardPrize: integer; gameMode: Omit<APIGameMode, "name">; type: APITournamentHeaderType; duration: integer; tag: string; creatorTag: string; name: string; description: string; capacity: integer; maxCapacity: integer; levelCap: integer; } declare enum APITournamentHeaderStatus { IN_PREPARATION = "inPreparation", IN_PROGRESS = "inProgress", ENDED = "ended", UNKNOWN = "unknown" } declare enum APITournamentHeaderType { OPEN = "open", PASSWORD_PROTECTED = "passwordProtected", UNKNOWN = "unknown" } declare type APIClanList = APIList<Omit<APIClan, "clanChestPoints" | "clanChestStatus" | "description" | "memberList">>; declare type APIClanRankingList = APIList<APIClanRanking>; interface APIClanRanking { clanScore: integer; badgeId: integer; location: APILocation; members: integer; tag: string; name: string; rank: integer; previousRank: integer; } interface APIRegisterMatchRequest { playerTags: APIStringList; gameMode: APIRegisterMatchRequestGameMode; } declare type APIStringList = string[]; declare enum APIRegisterMatchRequestGameMode { REGULAR = "regular", TEAM_VS_TEAM = "teamVsTeam", DOUBLE_ELIXIR_TOURNAMENT = "doubleElixirTournament", TRIPLE_ELIXIR_TOURNAMENT = "tripleElixirTournament", RAGE = "rage", SUDDEN_DEATH = "suddenDeath", TOUCHDOWN = "touchdown", RAMP_UP = "rampUp", DRAFT = "draft", MIRROR = "mirror", DRAGON_HUNT = "dragonHunt" } interface APIRegisterMatchResponse { tag: string; } interface APIUpcomingChests { items: APIChestList; } declare type APIChestList = APIChest[]; interface APIChest { name: string; index: integer; } declare type APIClanWarLog = APIClanWarLogEntry[]; interface APIClanWarLogEntry { standings: APIClanWarStandingList; seasonId: integer; participants: APIClanWarParticipantList; createdDate: string; } declare type APIClanWarStandingList = APIClanWarStanding[]; interface APIClanWarStanding { trophyChange: integer; clan: APIClanWarClan; } interface APIPlayer { clan?: APIPlayerClan; cards: APIPlayerItemLevelList; currentFavouriteCard?: APIItem; badges: APIPlayerAchievementBadgeList; arena: APIArena; role: APIPlayerRole; wins: integer; losses: integer; totalDonations: integer; leagueStatistics?: APIPlayerLeagueStatistics; tag: string; name: string; expLevel: integer; trophies: integer; bestTrophies: integer; donations: integer; donationsReceived: integer; achievements: APIPlayerAchievementProgressList; battleCount: integer; threeCrownWins: integer; challengeCardsWon: integer; challengeMaxWins: integer; tournamentCardsWon: integer; tournamentBattleCount: integer; currentDeck: APIPlayerItemLevelList; warDayWins: integer; clanCardsCollected: integer; starPoints?: integer; expPoints: integer; } declare enum APIPlayerRole { NOT_MEMBER = "notMember", MEMBER = "member", LEADER = "leader", ADMIN = "admin", COLEADER = "coLeader" } declare type APIPlayerAchievementProgressList = APIPlayerAchievementProgress[]; interface APIPlayerAchievementProgress { stars: integer; value: integer; name: string; target: integer; info: string; completionInfo: string | null; } interface APIPlayerLeagueStatistics { currentSeason: APILeagueSeasonResult; bestSeason: APILeagueSeasonResult; previousSeason: APILeagueSeasonResult; } interface APILeagueSeasonResult { trophies: integer; bestTrophies?: integer; rank?: integer; id?: string; } declare type APIPlayerAchievementBadgeList = APIPlayerAchievementBadge[]; interface APIPlayerAchievementBadge { iconUrls: { large: string; }; maxLevel: integer; progress: integer; target: integer; level: integer; name: string; } declare type APIItemList = APIList<APIItem>; interface APIClientError { reason: string; message?: string; type?: string; detail?: unknown; } interface APIList<T> { items: T[]; paging?: APIPaging; } interface APIPaging { cursors: APICursors; } interface APICursors { after?: string; before?: string; } declare enum APIRiverRacePeriodType { TRAINING = "training", WAR_DAY = "warDay", COLOSSEUM = "colosseum" } declare enum APIRiverRaceState { CLAN_NOT_FOUND = "clanNotFound", ACCESS_DENIED = "accessDenied", MATCHMAKING = "matchmaking", MATCHED = "matched", FULL = "full", ENDED = "ended" } export { APIArena, APIBattle, APIBattleDeckSelection, APIBattleList, APIBattleType, APICancelMatchResponse, APIChallenge, APIChallengeChain, APIChallengeChainType, APIChallengeChainsList, APIChallengeGameMode, APIChallengeList, APIChest, APIChestList, APIClan, APIClanChestStatus, APIClanList, APIClanMember, APIClanMemberList, APIClanMemberRole, APIClanRanking, APIClanRankingList, APIClanType, APIClanWarClan, APIClanWarClanList, APIClanWarLog, APIClanWarLogEntry, APIClanWarParticipant, APIClanWarParticipantList, APIClanWarStanding, APIClanWarStandingList, APIClientError, APICurrentClanWar, APICurrentClanWarState, APICurrentRiverRace, APIGameMode, APIIntegerList, APIItem, APIItemList, APIJsonNode, APILadderTournament, APILadderTournamentList, APILadderTournamentRanking, APILadderTournamentRankingList, APILeagueSeason, APILeagueSeasonList, APILeagueSeasonResult, APIList, APILocation, APILocationList, APIMatch, APIMatchState, APIPaging, APIPeriodLog, APIPeriodLogEntry, APIPeriodLogEntryClan, APIPeriodLogList, APIPlayer, APIPlayerAchievementBadge, APIPlayerAchievementBadgeList, APIPlayerAchievementProgress, APIPlayerAchievementProgressList, APIPlayerBattleData, APIPlayerBattleDataList, APIPlayerClan, APIPlayerItemLevel, APIPlayerItemLevelList, APIPlayerLeagueStatistics, APIPlayerRanking, APIPlayerRankingClan, APIPlayerRankingList, APIPlayerRole, APIRegisterMatchRequest, APIRegisterMatchRequestGameMode, APIRegisterMatchResponse, APIRiverRaceClan, APIRiverRaceClanList, APIRiverRaceLog, APIRiverRaceLogEntry, APIRiverRaceParticipant, APIRiverRaceParticipantList, APIRiverRacePeriodType, APIRiverRaceStanding, APIRiverRaceStandingList, APIRiverRaceState, APIStringList, APISurvivalMilestoneReward, APISurvivalMilestoneRewardList, APISurvivalMilestoneRewardRarity, APISurvivalMilestoneRewardResource, APISurvivalMilestoneRewardType, APITournament, APITournamentHeader, APITournamentHeaderList, APITournamentHeaderStatus, APITournamentHeaderType, APITournamentMember, APITournamentMemberList, APITournamentStatus, APITournamentType, APIUpcomingChests, APIVerifyTokenRequest, APIVerifyTokenResponse, APIVersion, Path, PeriodLogEntryList, Replay, ResponseType, Routes, ValueOf, Routes as default };