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

//#region src/creature/types.d.ts
/**
 * The response for creature display media.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface CreatureDisplayMediaResponse extends ResponseBase {
  assets: Array<DisplayMediaAsset>;
  id: number;
}
/**
 * The response for a creature family index.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface CreatureFamilyIndexResponse extends ResponseBase {
  creature_families: Array<NameIdKey>;
}
/**
 * The response for creature family media.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface CreatureFamilyMediaResponse extends ResponseBase {
  assets: Array<MediaAsset>;
  id: number;
}
/**
 * The response for a creature family.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface CreatureFamilyResponse extends ResponseBase {
  id: number;
  media?: Media;
  name: string;
  specialization?: NameIdKey;
}
/**
 * The response for a creature.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface CreatureResponse extends ResponseBase {
  creature_displays: Array<CreatureDisplay>;
  family: NameIdKey;
  id: number;
  is_tameable: boolean;
  name: string;
  type: NameIdKey;
}
/**
 * The search parameters for a creature.
 * @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 CreatureSearchParameters extends BaseSearchParameters {
  locale: Locales;
  name: string;
}
/**
 * The response for a creature 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 CreatureSearchResponse extends SearchResponseWithoutResults {
  results: Array<CreatureSearchResponseItem>;
}
/**
 * The response for a creature type index.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface CreatureTypeIndexResponse extends ResponseBase {
  creature_types: Array<NameIdKey>;
}
/**
 * The response for a creature type.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface CreatureTypeResponse extends ResponseBase {
  id: number;
  name: string;
}
interface CreatureDisplay extends KeyBase {
  id: number;
}
interface CreatureSearchResponseItem extends KeyBase {
  data: {
    creature_displays: Array<{
      id: number;
    }>;
    family?: {
      id: number;
      name: Record<Locales, string>;
    };
    id: number;
    is_tameable: boolean;
    name: Record<Locales, string | undefined>;
    type: {
      id: number;
      name: Record<Locales, string>;
    };
  };
}
interface DisplayMediaAsset {
  key: string;
  value: string;
}
interface Media extends KeyBase {
  id: number;
}
//#endregion
//#region src/creature/index.d.ts
/**
 * Returns a creature by ID.
 * @param namespace The namespace to use. See {@link BlizzardNamespaces}.
 * @param creatureId The creature ID.
 * @returns The creature. See {@link CreatureResponse}.
 */
declare function creature(namespace: Extract<BlizzardNamespaces, 'static-classic1x' | 'static-classic'>, creatureId: number): Resource<CreatureResponse>;
/**
 * Returns media for a creature display by ID.
 * @param namespace The namespace to use. See {@link BlizzardNamespaces}.
 * @param creatureDisplayId The creature display ID.
 * @returns The creature display media. See {@link CreatureDisplayMediaResponse}.
 */
declare function creatureDisplayMedia(namespace: Extract<BlizzardNamespaces, 'static-classic1x' | 'static-classic'>, creatureDisplayId: number): Resource<CreatureDisplayMediaResponse>;
/**
 * Returns a creature family by ID.
 * @param namespace The namespace to use. See {@link BlizzardNamespaces}.
 * @param creatureFamilyId The creature family ID.
 * @returns The creature family. See {@link CreatureFamilyResponse}.
 */
declare function creatureFamily(namespace: Extract<BlizzardNamespaces, 'static-classic1x' | 'static-classic'>, creatureFamilyId: number): Resource<CreatureFamilyResponse>;
/**
 * Returns an index of creature families.
 * @param namespace The namespace to use. See {@link BlizzardNamespaces}.
 * @returns The creature family index. See {@link CreatureFamilyIndexResponse}.
 */
declare function creatureFamilyIndex(namespace: Extract<BlizzardNamespaces, 'static-classic1x' | 'static-classic'>): Resource<CreatureFamilyIndexResponse>;
/**
 * Returns media for a creature family by ID.
 * @param namespace The namespace to use. See {@link BlizzardNamespaces}.
 * @param creatureFamilyId The creature family ID.
 * @returns The creature family media. See {@link CreatureFamilyMediaResponse}.
 */
declare function creatureFamilyMedia(namespace: Extract<BlizzardNamespaces, 'static-classic1x' | 'static-classic'>, creatureFamilyId: number): Resource<CreatureFamilyMediaResponse>;
/**
 * Performs a search of creatures.
 * @param namespace The namespace to use. See {@link BlizzardNamespaces}.
 * @param options The creature search parameters. See {@link CreatureSearchParameters}.
 * @returns The creature search results. See {@link CreatureSearchResponse}.
 */
declare function creatureSearch(namespace: Extract<BlizzardNamespaces, 'static-classic1x' | 'static-classic'>, options: CreatureSearchParameters): Resource<CreatureSearchResponse, Omit<CreatureSearchParameters, 'locale' | 'name'>>;
/**
 * Returns a creature type by ID.
 * @param namespace The namespace to use. See {@link BlizzardNamespaces}.
 * @param creatureTypeId The creature type ID.
 * @returns The creature type. See {@link CreatureTypeResponse}.
 */
declare function creatureType(namespace: Extract<BlizzardNamespaces, 'static-classic1x' | 'static-classic'>, creatureTypeId: number): Resource<CreatureTypeResponse>;
/**
 * Returns an index of creature types.
 * @param namespace The namespace to use. See {@link BlizzardNamespaces}.
 * @returns The creature type index. See {@link CreatureTypeIndexResponse}.
 */
declare function creatureTypeIndex(namespace: Extract<BlizzardNamespaces, 'static-classic1x' | 'static-classic'>): Resource<CreatureTypeIndexResponse>;
//#endregion
export { CreatureTypeResponse as _, creatureFamilyMedia as a, creatureTypeIndex as c, CreatureFamilyMediaResponse as d, CreatureFamilyResponse as f, CreatureTypeIndexResponse as g, CreatureSearchResponse as h, creatureFamilyIndex as i, CreatureDisplayMediaResponse as l, CreatureSearchParameters as m, creatureDisplayMedia as n, creatureSearch as o, CreatureResponse as p, creatureFamily as r, creatureType as s, creature as t, CreatureFamilyIndexResponse as u };
//# sourceMappingURL=index-B-LUShkQ.d.ts.map