import { Character, Color, Faction, Factions, Href, KeyBase, NameIdKey, Realm, Resource, ResponseBase } from "@blizzard-api/core";

//#region src/guild/types.d.ts
interface GuildAchievementsResponse extends ResponseBase {
  achievements: Array<Achievement>;
  category_progress: Array<CategoryProgress>;
  guild: Guild;
  recent_events: Array<RecentEvent>;
  total_points: number;
  total_quantity: number;
}
interface GuildActivityResponse extends ResponseBase {
  activities: Array<ActivityElement>;
  guild: Guild;
}
interface GuildResponse extends ResponseBase {
  achievement_points: number;
  achievements: Href;
  activity: Href;
  created_timestamp: number;
  crest: Crest;
  faction: Faction;
  id: number;
  member_count: number;
  name: string;
  name_search: string;
  realm: Realm;
  roster: Href;
}
interface GuildRosterResponse extends ResponseBase {
  guild: Guild;
  members: Array<Member>;
}
interface Achievement {
  achievement: NameIdKey;
  completed_timestamp?: number;
  criteria?: Criteria;
  id: number;
}
interface ActivityElement {
  activity: {
    type: string;
  };
  character_achievement?: CharacterAchievement;
  encounter_completed?: EncounterActivity;
  timestamp: number;
}
interface Border {
  color: RgbWithId;
  id: number;
  media: KeyBase & {
    id: number;
  };
}
interface CategoryProgress {
  category: NameIdKey;
  points: number;
  quantity: number;
}
interface CharacterAchievement {
  achievement: NameIdKey;
  character: Character;
}
interface ChildCriterum {
  amount: number;
  id: number;
  is_completed: boolean;
}
interface Crest {
  background: {
    color: RgbWithId;
  };
  border: Border;
  emblem: Border;
}
interface Criteria {
  amount?: number;
  child_criteria?: Array<ChildCriterum>;
  id: number;
  is_completed: boolean;
}
interface EncounterActivity {
  encounter: NameIdKey;
  mode: {
    name: string;
    type: ModeType;
  };
}
interface Guild extends NameIdKey {
  faction: Faction;
  realm: Realm;
}
interface Member {
  character: RosterMemberCharacter;
  rank: number;
}
type ModeType = 'HEROIC' | 'LEGACY_10_MAN' | 'LEGACY_10_MAN_HEROIC' | 'LEGACY_25_MAN' | 'LEGACY_25_MAN_HEROIC' | 'LFR' | 'MYTHIC' | 'MYTHIC_KEYSTONE' | 'NORMAL';
interface Playable extends KeyBase {
  id: number;
}
interface RecentEvent {
  achievement: NameIdKey;
  timestamp: number;
}
interface RgbWithId {
  id: number;
  rgba: Color;
}
interface RosterMemberCharacter extends Character {
  faction: {
    type: Factions;
  };
  level: number;
  playable_class: Playable;
  playable_race: Playable;
}
//#endregion
//#region src/guild/index.d.ts
/**
 * @param realmSlug The slug of the realm.
 * @param nameSlug The lowercase name of the guild.
 * @returns a single guild by its name and realm.
 */
declare function guild(realmSlug: string, nameSlug: string): Resource<GuildResponse>;
/**
 * @param realmSlug The slug of the realm.
 * @param nameSlug The lowercase name of the guild.
 * @returns a single guild's achievements by name and realm.
 */
declare function guildAchievements(realmSlug: string, nameSlug: string): Resource<GuildAchievementsResponse>;
/**
 * @param realmSlug The slug of the realm.
 * @param nameSlug The lowercase name of the guild.
 * @returns a single guild's activity by name and realm.
 */
declare function guildActivity(realmSlug: string, nameSlug: string): Resource<GuildActivityResponse>;
/**
 * @param realmSlug The slug of the realm.
 * @param nameSlug The lowercase name of the guild.
 * @returns a single guild's roster by its name and realm.
 */
declare function guildRoster(realmSlug: string, nameSlug: string): Resource<GuildRosterResponse>;
//#endregion
export { GuildAchievementsResponse as a, GuildRosterResponse as c, guildRoster as i, guildAchievements as n, GuildActivityResponse as o, guildActivity as r, GuildResponse as s, guild as t };
//# sourceMappingURL=index-Dbd6X4HH.d.ts.map