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

//#region src/playable-class/types.d.ts
/**
 * The response for a playable class index.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface PlayableClassIndexResponse extends ResponseBase {
  classes: Array<NameIdKey>;
}
/**
 * The response for playable class media.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface PlayableClassMediaResponse extends ResponseBase {
  assets: Array<MediaAsset>;
  id: number;
}
/**
 * The response for a playable class.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface PlayableClassResponse extends NameId, ResponseBase {
  gender_name: GenderName;
  media: Media;
  playable_races: Array<NameIdKey>;
  power_type: NameIdKey;
  pvp_talent_slots: Href;
  specializations: Array<NameIdKey>;
}
/**
 * The response for a playable class's PvP talent slots.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface PvpTalentSlotsResponse extends ResponseBase {
  talent_slots: Array<TalentSlot>;
}
interface Media extends KeyBase {
  id: number;
}
interface TalentSlot {
  slot_number: number;
  unlock_player_level: number;
}
//#endregion
//#region src/playable-class/index.d.ts
/**
 * Get a playable class by ID.
 * @param playableClassId The playable class ID.
 * @returns The playable class. See {@link PlayableClassResponse}.
 */
declare function playableClass(playableClassId: number): Resource<PlayableClassResponse>;
/**
 * Get a playable class index.
 * @returns The playable class index. See {@link PlayableClassIndexResponse}.
 */
declare function playableClassIndex(): Resource<PlayableClassIndexResponse>;
/**
 * Get playable class media by ID.
 * @param playableClassId The playable class ID.
 * @returns The playable class media. See {@link PlayableClassMediaResponse}.
 */
declare function playableClassMedia(playableClassId: number): Resource<PlayableClassMediaResponse>;
/**
 * Get a playable class's PvP talent slots by ID.
 * @param playableClassId The playable class ID.
 * @returns The playable class's PvP talent slots. See {@link PvpTalentSlotsResponse}.
 */
declare function pvpTalentSlots(playableClassId: number): Resource<PvpTalentSlotsResponse>;
//#endregion
export { PlayableClassIndexResponse as a, PvpTalentSlotsResponse as c, pvpTalentSlots as i, playableClassIndex as n, PlayableClassMediaResponse as o, playableClassMedia as r, PlayableClassResponse as s, playableClass as t };
//# sourceMappingURL=index-D6FwaRSR2.d.ts.map