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

//#region src/character-encounters/types.d.ts
interface CharacterDungeonsResponse extends ResponseBase {
  expansions: Array<ExpansionWithDungeonInstances>;
}
interface CharacterEncountersSummaryResponse extends ResponseBase {
  character: Character;
  dungeons: Href;
  raids: Href;
}
interface CharacterRaidsResponse extends ResponseBase {
  character: Character;
  expansions: Array<ExpansionWithRaidInstances>;
}
interface DungeonDifficulties {
  name?: string;
  type?: 'HEROIC' | 'MYTHIC' | 'MYTHIC_KEYSTONE' | 'NORMAL';
}
interface DungeonInstance {
  instance: NameIdKey;
  modes: Array<DungeonMode>;
}
interface DungeonMode {
  difficulty: DungeonDifficulties;
  progress: Progress;
  status: Status;
}
interface Encounter {
  completed_count: number;
  encounter: NameIdKey;
  last_kill_timestamp: number;
}
interface ExpansionWithDungeonInstances {
  expansion: NameIdKey;
  instances: Array<DungeonInstance>;
}
interface ExpansionWithRaidInstances {
  expansion: NameIdKey;
  instances: Array<RaidInstance>;
}
interface Progress {
  completed_count: number;
  encounters: Array<Encounter>;
  total_count: number;
}
interface RaidDifficulties {
  name: string;
  type: 'HEROIC' | 'LEGACY_10_MAN' | 'LEGACY_10_MAN_HEROIC' | 'LEGACY_25_MAN' | 'LEGACY_25_MAN_HEROIC' | 'LFR' | 'MYTHIC' | 'NORMAL';
}
interface RaidInstance {
  instance: NameIdKey;
  modes: Array<RaidMode>;
}
interface RaidMode {
  difficulty: RaidDifficulties;
  progress: Progress;
  status: Status;
}
interface Status {
  name: string;
  type: 'COMPLETE' | 'IN_PROGRESS';
}
//#endregion
//#region src/character-encounters/index.d.ts
/**
 * @param realmSlug The slug of the realm.
 * @param characterName The lowercase name of the character.
 * @returns a summary of a character's completed dungeons.
 */
declare function characterDungeons(realmSlug: string, characterName: string): Resource<CharacterDungeonsResponse>;
/**
 * @param realmSlug The slug of the realm.
 * @param characterName The lowercase name of the character.
 * @returns a summary of a character's encounters.
 */
declare function characterEncountersSummary(realmSlug: string, characterName: string): Resource<CharacterEncountersSummaryResponse>;
/**
 * @param realmSlug The slug of the realm.
 * @param characterName The lowercase name of the character.
 * @returns a summary of a character's completed raids.
 */
declare function characterRaids(realmSlug: string, characterName: string): Resource<CharacterRaidsResponse>;
//#endregion
export { CharacterEncountersSummaryResponse as a, CharacterDungeonsResponse as i, characterEncountersSummary as n, CharacterRaidsResponse as o, characterRaids as r, characterDungeons as t };
//# sourceMappingURL=index-C95i4KEl.d.ts.map