genshin-db
Version:
Genshin Impact v5.8 JSON data. Search and get results in all in-game languages! Sources from the fandom wiki and GenshinData repo.
214 lines (181 loc) • 7.82 kB
TypeScript
/// <reference path="./folders/achievements.d.ts" />
/// <reference path="./folders/achievementgroups.d.ts" />
/// <reference path="./folders/adventureranks.d.ts" />
/// <reference path="./folders/animals.d.ts" />
/// <reference path="./folders/artifacts.d.ts" />
/// <reference path="./folders/characters.d.ts" />
/// <reference path="./folders/constellations.d.ts" />
/// <reference path="./folders/domains.d.ts" />
/// <reference path="./folders/elements.d.ts" />
/// <reference path="./folders/enemies.d.ts" />
/// <reference path="./folders/foods.d.ts" />
/// <reference path="./folders/geographies.d.ts" />
/// <reference path="./folders/materials.d.ts" />
/// <reference path="./folders/namecards.d.ts" />
/// <reference path="./folders/outfits.d.ts" />
/// <reference path="./folders/rarity.d.ts" />
/// <reference path="./folders/talentmaterialtypes.d.ts" />
/// <reference path="./folders/talents.d.ts" />
// <reference path="./folders/weaponmaterialtypes.d.ts" />
/// <reference path="./folders/weapons.d.ts" />
/// <reference path="./folders/windgliders.d.ts" />
/// <reference path="./folders/crafts.d.ts" />
/// <reference path="./folders/emojis.d.ts" />
/// <reference path="./folders/voiceovers.d.ts" />
/// <reference path="./folders/tcgactioncards.d.ts" />
/// <reference path="./folders/tcgcardbacks.d.ts" />
/// <reference path="./folders/tcgcardboxes.d.ts" />
/// <reference path="./folders/tcgcharactercards.d.ts" />
/// <reference path="./folders/tcgdetailedrules.d.ts" />
/// <reference path="./folders/tcgenemycards.d.ts" />
/// <reference path="./folders/tcgkeywords.d.ts" />
/// <reference path="./folders/tcglevelrewards.d.ts" />
/// <reference path="./folders/tcgstatuseffects.d.ts" />
/// <reference path="./folders/tcgsummons.d.ts" />
/// <reference path="./enums.d.ts" />
declare module "genshin-db" {
export interface QueryFunction<R> {
<Q extends string, O extends QueryOptions>(query: Q, opts?: O):
(O extends { dumpResult: true }
?
DumpResult<R, O, Q>
:
(O extends { matchCategories: true } ? (O extends { verboseCategories: true } ? R[] : string[]) : never) |
(Q extends "names" ? (O extends { matchCategories: true } ? never : R | undefined) : R | undefined)
)
}
export interface DumpResult<R, O extends QueryOptions, Q extends string> {
query: Q;
folder: Folder | Folder[];
match: string | undefined;
matchfolder: Folder;
matchtype: MatchType | undefined;
options: QueryOptions;
filename: (O extends { matchCategories: true } ? string[] : undefined) | string | undefined;
result: (O extends { matchCategories: true } ? (O extends { verboseCategories: true } ? R[] : string[]) : never) |
(Q extends "names" ? (O extends { matchCategories: true } ? never : R | undefined) : R | undefined);
}
/* Logic
if matchCategories
if verboseCategories
add R[];
else
add string[];
else
add never
if "names"
if matchCategories
add never
else
add R | undefined;
else
add R | undefined;
*/
/* Test examples
characters("names", { matchCategories: true }); // string[]
characters("names", { matchCategories: true, verboseCategories: true }); // Character[]
characters("names"); // Character | undefined
characters("names", { matchCategories: false }); // Character | undefined
characters("foobar"); // Character | undefined
characters("foobar", { matchCategories: false }); // Character | undefined
characters("foobar", { verboseCategories: false }); // Character | undefined
characters("foobar", { matchCategories: true }); // Character | string[] | undefined
characters("foobar", { matchCategories: true, verboseCategories: true }); // Character | Character[] | undefined
*/
export interface StatFunction {
(level: number, ascension?: number | '+' | '-'): StatResult;
}
export interface StatResult {
level: number;
ascension: number;
hp?: number;
attack?: number;
defense?: number;
specialized?: number;
}
export interface QueryOptions {
dumpResult?: boolean;
matchNames?: boolean;
matchAltNames?: boolean;
matchAliases?: boolean;
matchCategories?: boolean;
verboseCategories?: boolean;
queryLanguages?: Language[];
resultLanguage?: Language;
}
export const achievementgroups: QueryFunction<AchievementGroup>;
export const achievements: QueryFunction<Achievement>;
export const adventureranks: QueryFunction<AdventureRank>;
export const animals: QueryFunction<Animal>;
export const artifacts: QueryFunction<Artifact>;
export const characters: QueryFunction<Character>;
export const constellations: QueryFunction<Constellation>;
export const crafts: QueryFunction<Craft>;
export const domains: QueryFunction<Domain>;
export const elements: QueryFunction<Element>;
export const enemies: QueryFunction<Enemy>;
export const foods: QueryFunction<Food>;
export const geographies: QueryFunction<Geography>;
export const materials: QueryFunction<Material>;
export const namecards: QueryFunction<Namecard>;
export const outfits: QueryFunction<Outfit>;
/** @deprecated */
export const rarity: QueryFunction<Rarity>;
export const talentmaterialtypes: QueryFunction<TalentMaterial>;
export const talents: QueryFunction<Talent>;
// export const weaponmaterialtypes: QueryFunction<WeaponMaterial>;
export const weapons: QueryFunction<Weapon>;
export const windgliders: QueryFunction<WindGlider>;
export const emojis: QueryFunction<Emoji>;
export const voiceovers: QueryFunction<Voiceover>;
export const tcgactioncards: QueryFunction<TcgActionCards>;
export const tcgcardbacks: QueryFunction<TcgCardBacks>;
export const tcgcardboxes: QueryFunction<TcgCardBoxes>;
export const tcgcharactercards: QueryFunction<TcgCharacterCards>;
export const tcgdetailedrules: QueryFunction<TcgDetailedRules>;
export const tcgenemycards: QueryFunction<TcgEnemyCards>;
export const tcgkeywords: QueryFunction<TcgKeywords>;
export const tcglevelrewards: QueryFunction<TcgLevelRewards>;
export const tcgstatuseffects: QueryFunction<TcgStatusEffects>;
export const tcgsummons: QueryFunction<TcgSummons>;
export interface categories {
(query: string, folder: Folder, opts: QueryOptions): undefined | string[];
}
export interface Items {
id: string;
name: string;
count: number;
}
export interface Rewards {
id: number;
name: string;
rarity?: 1 | 2 | 3 | 4 | 5; // only used for artifacts
count?: number; // only used for adventure exp, mora, and companionship exp
countmax?: number; // upper range. used for enhancement ore which can be shown as "0~1"
}
// export interface Commission {
// name: string;
// description: string;
// target: string;
// city: string;
// }
//#region Altnames
export function addAltName(language: Language, folder: Folder, altname: string, query: string): boolean;
export function removeAltNames(language: Language, folder: Folder, altname: string): boolean;
export function setAltNameLimits(limit: { maxLength?: number, maxCount?: number }): void;
//#endregion
// not sure how to add default true to "overwrite" param
export function addData(data: ArrayBuffer | any, overwrite? : boolean): void;
export function searchFolder(folder: string, query: string, opts?: QueryOptions): any;
export function searchMultipleFolders(folders: string[], query: string, opts?: QueryOptions): any;
//#region Options
/**
* Set options by providing the values you want to change.
*/
export function setOptions(opts: QueryOptions): void;
/**
* Returns a cloned copy of the options.
*/
export function getOptions(): QueryOptions;
//#endregion
}