import { Faction, Href, KeyBase, NameId, NameIdKey, NonNeutralFactions, Resource, ResponseBase } from "@blizzard-api/core";

//#region src/pvp-season/types.d.ts
/**
 * The response for a PvP leaderboard index.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface PvpLeaderboardIndexResponse extends ResponseBase {
  leaderboards: Array<KeyBase & {
    id?: number;
    name: string;
  }>;
  season: Season;
}
/**
 * The response for a PvP leaderboard.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface PvpLeaderboardResponse extends ResponseBase {
  bracket: Bracket;
  entries: Array<Entry>;
  name: string;
  season: Season;
}
/**
 * The response for PvP rewards index.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface PvpRewardsIndexResponse extends ResponseBase {
  rewards: Array<Reward>;
  season: Season;
}
/**
 * The response for a PvP season index.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface PvpSeasonIndexResponse extends ResponseBase {
  current_season: Season;
  seasons: Array<Season>;
}
/**
 * The response for a PvP season.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface PvpSeasonResponse extends ResponseBase {
  id: number;
  leaderboards: Href;
  rewards: Href;
  season_end_timestamp?: number;
  season_name?: null | string;
  season_start_timestamp: number;
}
interface Bracket {
  id: number;
  type: 'ARENA_3v3' | 'BATTLEGROUNDS' | 'BLITZ' | 'SHUFFLE';
}
interface Character$1 extends NameId {
  realm: Realm$1;
}
interface Entry {
  character: Character$1;
  faction: {
    type: NonNeutralFactions;
  };
  rank: number;
  rating: number;
  season_match_statistics: SeasonMatchStatistics;
  tier: Season;
}
interface Realm$1 extends KeyBase {
  id: number;
  slug: string;
}
interface Reward {
  achievement: NameIdKey;
  bracket: Bracket;
  faction?: Faction;
  rating_cutoff: number;
  specialization?: NameIdKey;
}
interface Season extends KeyBase {
  id: number;
}
interface SeasonMatchStatistics {
  lost: number;
  played: number;
  won: number;
}
//#endregion
//#region src/pvp-season/index.d.ts
/**
 * Get a PvP leaderboard by PvP season ID and bracket.
 * @param pvpSeasonId The PvP season ID.
 * @param bracket The PvP bracket.
 * @returns The PvP leaderboard. See {@link PvpLeaderboardResponse}.
 */
declare function pvpLeaderboard(pvpSeasonId: number, bracket: string): Resource<PvpLeaderboardResponse>;
/**
 * Get a PvP leaderboard index by PvP season ID.
 * @param pvpSeasonId The PvP season ID.
 * @returns The PvP leaderboard index. See {@link PvpLeaderboardIndexResponse}.
 */
declare function pvpLeaderboardIndex(pvpSeasonId: number): Resource<PvpLeaderboardIndexResponse>;
/**
 * Get a PvP reward index by PvP season ID.
 * @param pvpSeasonId The PvP season ID.
 * @returns The PvP reward index. See {@link PvpRewardsIndexResponse}.
 */
declare function pvpRewardsIndex(pvpSeasonId: number): Resource<PvpRewardsIndexResponse>;
/**
 * Get a PvP season by ID.
 * @param pvpSeasonId The PvP season ID.
 * @returns The PvP season. See {@link PvpSeasonResponse}.
 */
declare function pvpSeason(pvpSeasonId: number): Resource<PvpSeasonResponse>;
/**
 * Get a PvP season index.
 * @returns The PvP season index. See {@link PvpSeasonIndexResponse}.
 */
declare function pvpSeasonIndex(): Resource<PvpSeasonIndexResponse>;
//#endregion
export { pvpSeasonIndex as a, PvpRewardsIndexResponse as c, pvpSeason as i, PvpSeasonIndexResponse as l, pvpLeaderboardIndex as n, PvpLeaderboardIndexResponse as o, pvpRewardsIndex as r, PvpLeaderboardResponse as s, pvpLeaderboard as t, PvpSeasonResponse as u };
//# sourceMappingURL=index-BVs6hQne2.d.ts.map