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

//#region src/guild/types.d.ts
interface GuildAchievementsClassicEraResponse extends ResponseBase {
  guild: Guild;
}
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;
  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 Guild extends NameIdKey {
  faction: Faction;
  realm: Realm;
}
interface Member {
  character: RosterMemberCharacter;
  rank: number;
}
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 namespace The namespace to use. See {@link BlizzardNamespaces}.
 * @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(namespace: Extract<BlizzardNamespaces, 'profile-classic1x' | 'profile-classic'>, realmSlug: string, nameSlug: string): Resource<GuildResponse>;
/**
 * @param namespace The namespace to use. See {@link BlizzardNamespaces}.
 * @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<T extends Extract<BlizzardNamespaces, 'profile-classic1x' | 'profile-classic'>>(namespace: T, realmSlug: string, nameSlug: string): Resource<T extends 'profile-classic1x' ? GuildAchievementsClassicEraResponse : GuildAchievementsResponse>;
/**
 * @param namespace The namespace to use. See {@link BlizzardNamespaces}.
 * @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(namespace: Extract<BlizzardNamespaces, 'profile-classic1x' | 'profile-classic'>, realmSlug: string, nameSlug: string): Resource<GuildActivityResponse>;
/**
 * @param namespace The namespace to use. See {@link BlizzardNamespaces}.
 * @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(namespace: Extract<BlizzardNamespaces, 'profile-classic1x' | 'profile-classic'>, realmSlug: string, nameSlug: string): Resource<GuildRosterResponse>;
//#endregion
export { GuildAchievementsClassicEraResponse as a, GuildResponse as c, guildRoster as i, GuildRosterResponse as l, guildAchievements as n, GuildAchievementsResponse as o, guildActivity as r, GuildActivityResponse as s, guild as t };
//# sourceMappingURL=index-DajMx-uR.d.ts.map