import { Faction, Href, NameIdKey, NullishNameIdKey, Resource, ResponseBase } from "@blizzard-api/core";

//#region src/quest/types.d.ts
/**
 * The response for a quest area index.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface QuestAreaIndexResponse extends ResponseBase {
  areas: Array<NullishNameIdKey>;
}
/**
 * The response for a quest area.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface QuestAreaResponse extends ResponseBase {
  area: string;
  id: number;
  quests: Array<NameIdKey>;
}
/**
 * The response for a quest category index.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface QuestCategoryIndexResponse extends ResponseBase {
  categories: Array<NameIdKey>;
}
/**
 * The response for a quest category.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface QuestCategoryResponse extends ResponseBase {
  category: string;
  id: number;
  quests: Array<NameIdKey>;
}
/**
 * The response for a quest index.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface QuestIndexResponse extends ResponseBase {
  areas: Href;
  categories: Href;
  types: Href;
}
/**
 * The response for a quest.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface QuestResponse extends ResponseBase {
  area?: NameIdKey;
  category: NameIdKey;
  description: string;
  id: number;
  requirements: Requirements;
  rewards: Rewards;
  title: string;
}
/**
 * The response for a quest type index.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface QuestTypeIndexResponse extends ResponseBase {
  types: Array<NameIdKey>;
}
/**
 * The response for a quest type.
 * @see {@link https://develop.battle.net/documentation/world-of-warcraft/game-data-apis}
 */
interface QuestTypeResponse extends ResponseBase {
  id: number;
  quests: Array<NameIdKey>;
  type: string;
}
interface Money {
  units: Units;
  value: number;
}
interface Reputation {
  reward: NameIdKey;
  value: number;
}
interface ReputationRequirement {
  faction: NameIdKey;
  min_reputation: number;
}
interface Requirements {
  faction: Faction;
  max_character_level: number;
  min_character_level: number;
  reputations: Array<ReputationRequirement>;
}
interface Rewards {
  experience: number;
  money: Money;
  reputations: Array<Reputation>;
}
interface Units {
  copper: number;
  gold: number;
  silver: number;
}
//#endregion
//#region src/quest/index.d.ts
/**
 * Get a quest by ID.
 * @param questId The quest ID.
 * @returns The quest. See {@link QuestResponse}.
 */
declare function quest(questId: number): Resource<QuestResponse>;
/**
 * Get a quest area by ID.
 * @param questAreaId The quest area ID.
 * @returns The quest area. See {@link QuestAreaResponse}.
 */
declare function questArea(questAreaId: number): Resource<QuestAreaResponse>;
/**
 * Get a quest area index.
 * @returns The quest area index. See {@link QuestAreaIndexResponse}.
 */
declare function questAreaIndex(): Resource<QuestAreaIndexResponse>;
/**
 * Get a quest category by ID.
 * @param questCategoryId The quest category ID.
 * @returns The quest category. See {@link QuestCategoryResponse}.
 */
declare function questCategory(questCategoryId: number): Resource<QuestCategoryResponse>;
/**
 * Get a quest category index.
 * @returns The quest category index. See {@link QuestCategoryIndexResponse}.
 */
declare function questCategoryIndex(): Resource<QuestCategoryIndexResponse>;
/**
 * Get a quest index.
 * @returns The quest index. See {@link QuestIndexResponse}.
 */
declare function questIndex(): Resource<QuestIndexResponse>;
/**
 * Get a quest type by ID.
 * @param questTypeId The quest type ID.
 * @returns The quest type. See {@link QuestTypeResponse}.
 */
declare function questType(questTypeId: number): Resource<QuestTypeResponse>;
/**
 * Get a quest type index.
 * @returns The quest type index. See {@link QuestTypeIndexResponse}.
 */
declare function questTypeIndex(): Resource<QuestTypeIndexResponse>;
//#endregion
export { questCategoryIndex as a, questTypeIndex as c, QuestCategoryIndexResponse as d, QuestCategoryResponse as f, QuestTypeResponse as g, QuestTypeIndexResponse as h, questCategory as i, QuestAreaIndexResponse as l, QuestResponse as m, questArea as n, questIndex as o, QuestIndexResponse as p, questAreaIndex as r, questType as s, quest as t, QuestAreaResponse as u };
//# sourceMappingURL=index-DaGLTQJn2.d.ts.map