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

//#region src/playable-specialization/types.d.ts
/**
 * The response for a playable specialization index.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface PlayableSpecializationIndexResponse extends ResponseBase {
  character_specializations: Array<NameIdKey>;
  pet_specializations: Array<NameIdKey>;
}
/**
 * The response for a playable specialization media.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface PlayableSpecializationMediaResponse extends ResponseBase {
  assets: Array<MediaAsset>;
  id: number;
}
/**
 * The response for a playable specialization.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface PlayableSpecializationResponse extends NameId, ResponseBase {
  gender_description: GenderName;
  hero_talent_trees: Array<NullishNameIdKey>;
  media: Media;
  playable_class: NameIdKey;
  power_type: NameIdKey;
  primary_stat_type: PrimaryStatType;
  pvp_talents: Array<PvpTalent>;
  role: PrimaryStatType;
  spec_talent_tree: SpecTalentTree;
}
interface Media extends KeyBase {
  id: number;
}
interface PrimaryStatType {
  name: string;
  type: string;
}
interface PvpTalent {
  spell_tooltip: SpellTooltip;
  talent: NameIdKey;
}
interface SpecTalentTree extends KeyBase {
  name: string;
}
interface SpellTooltip {
  cast_time: string;
  cooldown?: string;
  description: string;
  power_cost?: null | string;
  range?: string;
}
//#endregion
//#region src/playable-specialization/index.d.ts
/**
 * Get a playable specialization by ID.
 * @param specializationId The playable specialization ID.
 * @returns The playable specialization. See {@link PlayableSpecializationResponse}.
 */
declare function playableSpecialization(specializationId: number): Resource<PlayableSpecializationResponse>;
/**
 * Get a playable specialization index.
 * @returns The playable specialization index. See {@link PlayableSpecializationIndexResponse}.
 */
declare function playableSpecializationIndex(): Resource<PlayableSpecializationIndexResponse>;
/**
 * Get a playable specialization media by ID.
 * @param specializationId The playable specialization ID.
 * @returns The playable specialization media. See {@link PlayableSpecializationMediaResponse}.
 */
declare function playableSpecializationMedia(specializationId: number): Resource<PlayableSpecializationMediaResponse>;
//#endregion
export { PlayableSpecializationMediaResponse as a, PlayableSpecializationIndexResponse as i, playableSpecializationIndex as n, PlayableSpecializationResponse as o, playableSpecializationMedia as r, playableSpecialization as t };
//# sourceMappingURL=index-BHkqRbxC2.d.ts.map