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

//#region src/tech-talent/types.d.ts
/**
 * The response for a tech talent index.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface TechTalentIndexResponse extends ResponseBase {
  talents: Array<NameIdKey>;
}
/**
 * The response for a tech talent media.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface TechTalentMediaResponse extends ResponseBase {
  assets: Array<MediaAsset>;
}
/**
 * The response for a tech talent.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface TechTalentResponse extends NameId, ResponseBase {
  description?: string;
  display_order: number;
  media: Media;
  prerequisite_talent?: NameIdKey;
  socket_type?: {
    name: string;
    type: 'ENDURANCE' | 'FINESSE' | 'POTENCY';
  };
  spell_tooltip?: SpellTooltip;
  talent_tree: KeyBase & {
    id: number;
    name?: string;
  };
  tier: number;
}
/**
 * The response for a tech talent tree index.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface TechTalentTreeIndexResponse extends ResponseBase {
  talent_trees: Array<TalentTree>;
}
/**
 * The response for a tech talent tree.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface TechTalentTreeResponse extends ResponseBase {
  id: number;
  max_tiers: number;
  playable_class?: NameIdKey;
  talents: Array<NameIdKey>;
}
interface Media extends KeyBase {
  id: number;
}
interface SpellTooltip {
  cast_time: string;
  cooldown?: string;
  description: null | string;
  power_cost?: null | string;
  range?: string;
  spell: NullishNameIdKey;
}
interface TalentTree extends KeyBase {
  id: number;
  name?: string;
}
//#endregion
//#region src/tech-talent/index.d.ts
/**
 * Get a tech talent by ID.
 * @param techTalentId The tech talent ID.
 * @returns The tech talent. See {@link TechTalentResponse}.
 */
declare function techTalent(techTalentId: number): Resource<TechTalentResponse>;
/**
 * Get a tech talent index.
 * @returns The tech talent index. See {@link TechTalentIndexResponse}.
 */
declare function techTalentIndex(): Resource<TechTalentIndexResponse>;
/**
 * Get tech talent media by ID.
 * @param techTalentId The tech talent ID.
 * @returns The tech talent media. See {@link TechTalentMediaResponse}.
 */
declare function techTalentMedia(techTalentId: number): Resource<TechTalentMediaResponse>;
/**
 * Get a tech talent tree by ID.
 * @param techTalentTreeId The tech talent tree ID.
 * @returns The tech talent tree. See {@link TechTalentTreeResponse}.
 */
declare function techTalentTree(techTalentTreeId: number): Resource<TechTalentTreeResponse>;
/**
 * Get a tech talent tree index.
 * @returns The tech talent tree index. See {@link TechTalentTreeIndexResponse}.
 */
declare function techTalentTreeIndex(): Resource<TechTalentTreeIndexResponse>;
//#endregion
export { techTalentTreeIndex as a, TechTalentResponse as c, techTalentTree as i, TechTalentTreeIndexResponse as l, techTalentIndex as n, TechTalentIndexResponse as o, techTalentMedia as r, TechTalentMediaResponse as s, techTalent as t, TechTalentTreeResponse as u };
//# sourceMappingURL=index-BBahOBQS2.d.ts.map