UNPKG

enka-network-api

Version:

Enka-network API wrapper for Genshin Impact.

48 lines (47 loc) 3.11 kB
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>;