@blizzard-api/hs
Version:
A series of helpers to interact with the Hearthstone Blizzard API
374 lines (362 loc) • 10.5 kB
TypeScript
import { Locales, Resource } from "@blizzard-api/core";
//#region src/base.d.ts
type GameMode$1 = 'arena' | 'battlegrounds' | 'classic' | 'constructed' | 'duels' | 'mercenaries' | 'standard';
type SearchSortOption = `${SortOptions}:${SortDirection}`;
type SortDirection = 'asc' | 'desc';
type SortOptions = 'attack' | 'class' | 'dataAdded' | 'groupByClass' | 'health' | 'manaCost' | 'name';
//#endregion
//#region src/card-backs/types.d.ts
interface CardBackSearchParameters {
cardBackCategory?: 'achieve' | 'base' | 'blizzard' | 'esports' | 'events' | 'fireside' | 'game_license' | 'golden' | 'heroes' | 'legend' | 'pre_purchase' | 'promotion' | 'season';
locale?: Locales;
page?: number;
pageSize?: number;
sort?: SearchSortOption;
textFilter?: string;
}
interface CardBackSearchResponse {
cardBacks: Array<SingleCardBackSearchResponse>;
cardCount: number;
page: number;
pageCount: number;
}
interface SingleCardBackSearchResponse {
id: number;
image: string;
name: Record<Locales, string> | string;
slug: string;
sortCategory: number;
text: Record<Locales, string> | string;
}
//#endregion
//#region src/card-backs/card-backs.d.ts
/**
* Returns a list of card backs based on the search parameters provided.
* @param options The options for fetching card backs. See {@link CardBackSearchParameters}.
* @returns The card back search resource. See {@link CardBackSearchResponse}.
*/
declare function cardBackSearch(options: CardBackSearchParameters): Resource<CardBackSearchResponse, CardBackSearchParameters>;
/**
* Returns a single card back based on the ID provided.
* @param id The card back ID
* @param locale The locale to use for fetching the card back (optional).
* @returns The card back resource. See {@link SingleCardBackSearchResponse}.
*/
declare function fetchOneCardBack(id: string, locale?: Locales): Resource<SingleCardBackSearchResponse, {
locale?: Locales;
}>;
//#endregion
//#region src/cards/types.d.ts
interface BlizzardCardSearchParameters extends BaseSearchParameters {
attack?: string;
defaultMercenary?: string;
health?: string;
mercenaryId?: string;
}
interface CardSearchParameters extends BaseSearchParameters {
attack?: Array<number> | number;
defaultMercenary?: Array<number> | number;
health?: Array<number> | number;
mercenaryId?: Array<number> | number;
}
interface CardSearchResponse {
cardCount: number;
cards: Array<Card$1>;
page: number;
pageCount: number;
}
interface FetchOneCardResponse {
artistName: string;
attack: number;
cardSetId: number;
cardTypeId: number;
classId: number;
collectible: number;
cropImage: string;
flavorText: Record<Locales, string> | string;
health: number;
id: number;
image: Record<Locales, string> | string;
imageGold: Record<Locales, string> | string;
isZilliaxCosmeticModule: boolean;
isZilliaxFunctionalModule: boolean;
keywordIds: Array<number>;
manaCost: number;
multiClassIds: Array<number>;
name: Record<Locales, string> | string;
rarityId: number;
slug: string;
text: Record<Locales, string> | string;
}
interface BaseSearchParameters {
gameMode?: GameMode$1;
locale?: Locales;
mercenaryRole?: string;
minionType?: string;
page?: number;
pageSize?: number;
sort?: 'attack:asc' | 'attack:desc' | 'health:asc' | 'health:desc' | 'name:asc' | 'name:desc' | 'tier:asc' | 'tier:desc';
textFilter?: string;
tier?: 1 | 2 | 3 | 4 | 5 | 6 | 'hero';
}
interface Card$1 {
artistName: null | string;
attack: number;
cardSetId: number;
cardTypeId: number;
classId: null | number;
collectible: number;
cropImage: null | string;
flavorText: string;
health: number;
id: number;
image: string;
imageGold: string;
isZilliaxCosmeticModule: boolean;
isZilliaxFunctionalModule: boolean;
manaCost: number;
mercenaryHero: MercenaryHero;
minionTypeId: number;
multiClassIds: Array<number>;
multiTypeIds?: Array<number>;
name: string;
rarityId: number;
slug: string;
text: string;
}
interface MercenaryHero {
collectible: number;
craftingCost: number;
default: number;
faction: null | number;
mercId: number;
rarity: number;
roleId: number;
statsByLevel: Record<string, StatsByLevel>;
}
interface StatsByLevel {
attack: number;
health: number;
}
//#endregion
//#region src/cards/cards.d.ts
/**
* Returns a list of cards based on the search parameters provided.
* @param options The options for fetching cards. See {@link CardSearchParameters}.
* @returns The card search resource. See {@link CardSearchResponse}.
*/
declare function cardSearch(options: CardSearchParameters): Resource<CardSearchResponse, BlizzardCardSearchParameters>;
/**
* Returns a single card based on the ID provided.
* @param id The card ID
* @param options The options for fetching a card.
* @param options.gameMode The game mode to use for fetching the card (optional).
* @param options.locale The locale to use for fetching the card (optional).
* @returns The card resource. See {@link FetchOneCardResponse}.
*/
declare function fetchOneCard(id: string, options?: {
gameMode?: GameMode$1;
locale?: Locales;
}): Resource<FetchOneCardResponse, {
gameMode?: GameMode$1;
locale?: Locales;
}>;
//#endregion
//#region src/decks/types.d.ts
interface DeckResponse {
cardCount: number;
cards: Array<Card>;
class: Class$1;
deckCode: string;
format: string;
hero: Hero;
heroPower: Hero;
version: number;
}
type DeckSearchParameters = {
code: string;
} | {
hero?: string;
ids: string;
};
interface Card {
armor?: number;
artistName: string;
attack?: number;
bannedFromSideboard?: number;
cardSetId: number;
cardTypeId: number;
childIds?: Array<number>;
classId: number;
collectible: number;
cropImage: string;
flavorText: string;
health?: number;
id: number;
image: string;
imageGold: string;
isZilliaxCosmeticModule: boolean;
isZilliaxFunctionalModule: boolean;
keywordIds?: Array<number>;
manaCost: number;
minionTypeId?: number;
multiClassIds: Array<number>;
name: string;
rarityId: number;
slug: string;
spellSchoolId?: number;
text: string;
}
interface Class$1 {
id: number;
name: string;
slug: string;
}
interface Hero {
artistName: null | string;
cardSetId: number;
cardTypeId: number;
classId: number;
collectible: number;
cropImage: null;
flavorText: string;
health?: number;
id: number;
image: string;
imageGold: string;
isZilliaxCosmeticModule: boolean;
isZilliaxFunctionalModule: boolean;
manaCost: number;
multiClassIds: Array<number>;
name: string;
parentId: number;
rarityId: null | number;
slug: string;
text: string;
}
//#endregion
//#region src/decks/decks.d.ts
/**
* Returns a deck based on the code provided.
* @param options The options for fetching a deck.
* @returns The deck resource. See {@link DeckResponse}.
*/
declare function getDeck(options: {
code: string;
} | {
hero?: string;
ids: Array<string>;
}): Resource<DeckResponse, DeckSearchParameters>;
//#endregion
//#region ../wow/src/base.d.ts
/**
* Base record interface containing name and id properties that often appear together in Blizzard API responses.
*/
interface NameId {
id: number;
name: string;
}
//#endregion
//#region src/metadata/types.d.ts
/**
* Base record containing both {@link KeyBase} and {@link NameId} interfaces.
*/
interface AllMetadataResponse {
arenaIds: Array<number>;
bgGameModes: Array<GameMode>;
cardBackCategories: Array<GameMode>;
classes: Array<Class>;
filterableFields: Array<string>;
gameModes: Array<GameMode>;
keywords: Array<Keyword>;
mercenaryFactions: Array<GameMode>;
mercenaryRoles: Array<GameMode>;
minionTypes: Array<GameMode>;
numericFields: Array<string>;
rarities: Array<Rarity>;
setGroups: Array<SetGroup>;
sets: Array<Set>;
spellSchools: Array<GameMode>;
types: Array<GameMode>;
}
interface SpecificMetadataResponse extends NameId {
aliasSetIds?: Array<number>;
collectibleCount: number;
collectibleRevealedCount: number;
hyped: boolean;
nonCollectibleCount: number;
nonCollectibleRevealedCount: number;
slug: string;
type: SetType;
}
interface Class {
alternateHeroCardIds?: Array<number>;
cardId?: number;
heroPowerCardId?: number;
id: number;
name: string;
slug: string;
}
interface GameMode extends NameId {
gameModes?: Array<number>;
slug: string;
}
interface Keyword extends NameId {
gameModes: Array<number>;
refText: string;
slug: string;
text: string;
}
interface Rarity extends NameId {
craftingCost: Array<null | number>;
dustValue: Array<null | number>;
slug: string;
}
interface Set extends NameId {
aliasSetIds?: Array<number>;
collectibleCount: number;
collectibleRevealedCount: number;
hyped: boolean;
nonCollectibleCount: number;
nonCollectibleRevealedCount: number;
slug: string;
type: SetType;
}
interface SetGroup {
cardSets: Array<string>;
icon?: string;
name: string;
slug: string;
standard?: boolean;
svg?: null | string;
year?: number;
yearRange?: string;
}
type SetType = '' | 'adventure' | 'base' | 'expansion';
//#endregion
//#region src/metadata/metadata.d.ts
/**
* Returns all metadata
* @returns The all metadata resource. See {@link AllMetadataResponse}.
*/
declare function allMetadata(): Resource<AllMetadataResponse>;
/**
* Returns specific metadata based on the type requested.
* @param type The type of metadata to retrieve.
* @returns The specific metadata resource. See {@link SpecificMetadataResponse}.
*/
declare function specificMetadata(type: 'classes' | 'keywords' | 'minionTypes' | 'rarities' | 'setGroups' | 'sets' | 'types'): Resource<SpecificMetadataResponse>;
//#endregion
//#region src/index.d.ts
declare const hs: {
cardBackSearch: typeof cardBackSearch;
fetchOneCardBack: typeof fetchOneCardBack;
cardSearch: typeof cardSearch;
fetchOneCard: typeof fetchOneCard;
getDeck: typeof getDeck;
allMetadata: typeof allMetadata;
specificMetadata: typeof specificMetadata;
};
//#endregion
export { AllMetadataResponse, BlizzardCardSearchParameters, CardBackSearchParameters, CardBackSearchResponse, CardSearchParameters, CardSearchResponse, DeckResponse, DeckSearchParameters, FetchOneCardResponse, SingleCardBackSearchResponse, SpecificMetadataResponse, allMetadata, cardBackSearch, cardSearch, hs as default, fetchOneCard, fetchOneCardBack, getDeck, hs, specificMetadata };
//# sourceMappingURL=index.d.ts.map