enka-network-api
Version:
Enka-network API wrapper for Genshin Impact.
48 lines (47 loc) • 3.11 kB
TypeScript
import { FlexJsonArray, FlexJsonElement, FlexJsonObject } from "config_file.js";
export declare const excelJsonOptions: {
allowBigint: true;
};
export type ExcelJsonElement = FlexJsonElement<typeof excelJsonOptions>;
export type ExcelJsonObject<T extends ExcelJsonElement = ExcelJsonElement> = FlexJsonObject<typeof excelJsonOptions, T>;
export type ExcelJsonArray<T extends ExcelJsonElement = ExcelJsonElement> = FlexJsonArray<typeof excelJsonOptions, T>;
export type ExcelKey = string | [string, ExcelJsonElement];
export declare const excelKeyMap: {
readonly AvatarExcelConfigData: ["id"];
readonly FetterInfoExcelConfigData: ["avatarId"];
readonly AvatarCostumeExcelConfigData: ["characterId", "skinId"];
readonly AvatarSkillDepotExcelConfigData: ["id"];
readonly AvatarSkillExcelConfigData: ["id"];
readonly ProudSkillExcelConfigData: ["proudSkillGroupId", "level"];
readonly AvatarTalentExcelConfigData: ["talentId"];
readonly AvatarPromoteExcelConfigData: ["avatarPromoteId", ["promoteLevel", 0]];
readonly AvatarCurveExcelConfigData: ["level"];
readonly AvatarCodexExcelConfigData: ["avatarId"];
readonly WeaponExcelConfigData: ["id"];
readonly WeaponPromoteExcelConfigData: ["weaponPromoteId", ["promoteLevel", 0]];
readonly WeaponCurveExcelConfigData: ["level"];
readonly WeaponCodexExcelConfigData: ["weaponId"];
readonly EquipAffixExcelConfigData: ["id", ["level", 0]];
readonly ReliquaryExcelConfigData: ["id"];
readonly ReliquaryLevelExcelConfigData: [["rank", 0], "level"];
readonly ReliquaryAffixExcelConfigData: ["id"];
readonly ReliquarySetExcelConfigData: ["setId"];
readonly ReliquaryCodexExcelConfigData: ["suitId", "level"];
readonly ManualTextMapConfigData: ["textMapId"];
readonly AvatarHeroEntityExcelConfigData: ["avatarId"];
readonly TrialAvatarFetterDataConfigData: ["avatarId"];
readonly MaterialExcelConfigData: ["id"];
readonly FetterCharacterCardExcelConfigData: ["avatarId"];
readonly RewardExcelConfigData: ["rewardId"];
readonly ProfilePictureExcelConfigData: ["id"];
readonly RoleCombatDifficultyExcelConfigData: ["difficultyId"];
};
export type ExcelType = keyof typeof excelKeyMap;
export declare const excels: ExcelType[];
export declare class ExcelTransformer {
transform<T extends ExcelType>(excel: T, data: ExcelJsonObject[]): SingleBy<typeof excelKeyMap[T]>;
}
export type IndexBy<T, Keys extends (string | number)[]> = Keys extends [string | number, ...infer U] ? U extends (string | number)[] ? T extends ExcelJsonObject<infer V> ? IndexBy<V, U> | undefined : unknown : T extends ExcelJsonObject<infer V> ? V | undefined : unknown : T;
export declare function indexBy<T extends ExcelJsonObject, U extends (string | number)[]>(data: T, ...keys: U): IndexBy<T, U>;
export type SingleBy<Keys extends ExcelKey[]> = Keys extends [ExcelKey, ...infer T] ? T extends ExcelKey[] ? ExcelJsonObject<SingleBy<T>> : never : ExcelJsonObject;
export declare function singleBy<T extends ExcelKey[]>(array: ExcelJsonArray<ExcelJsonObject>, ...keys: T): SingleBy<T>;