import { BaseSearchParameters, KeyBase, Locales, MediaAsset, NameId, Resource, ResponseBase, SearchResponseWithoutResults } from "@blizzard-api/core";

//#region src/spell/types.d.ts
/**
 * The response for a spell media.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface SpellMediaResponse extends ResponseBase {
  assets: Array<MediaAsset>;
  id: number;
}
/**
 * The response for a spell.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface SpellResponse extends NameId, ResponseBase {
  description: null | string;
  media: Media;
}
/**
 * The search parameters for spells.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/guides/search}
 */
interface SpellSearchParameters extends BaseSearchParameters {
  locale: Locales;
  name: string;
}
/**
 * The response for a spell search.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/guides/search}
 */
interface SpellSearchResponse extends SearchResponseWithoutResults {
  results: Array<SpellSearchResponseItem>;
}
interface Media extends KeyBase {
  id: number;
}
interface SpellSearchResponseItem extends KeyBase {
  data: {
    id: number;
    media: {
      id: number;
    };
    name: Record<Locales, string>;
  };
}
//#endregion
//#region src/spell/index.d.ts
/**
 * Get a spell by ID.
 * @param spellId The spell ID.
 * @returns The spell. See {@link SpellResponse}.
 */
declare function spell(spellId: number): Resource<SpellResponse>;
/**
 * Get spell media by ID.
 * @param spellId The spell ID.
 * @returns The spell media. See {@link SpellMediaResponse}.
 */
declare function spellMedia(spellId: number): Resource<SpellMediaResponse>;
/**
 * Get a spell search.
 * @param options The spell search options. See {@link SpellSearchParameters}.
 * @returns The spell search. See {@link SpellSearchResponse}.
 */
declare function spellSearch(options: SpellSearchParameters): Resource<SpellSearchResponse, Omit<SpellSearchParameters, 'locale' | 'name'>>;
//#endregion
export { SpellResponse as a, SpellMediaResponse as i, spellMedia as n, SpellSearchParameters as o, spellSearch as r, SpellSearchResponse as s, spell as t };
//# sourceMappingURL=index-tMR2Nejl2.d.ts.map