from typing import List, Union from msgspec import Struct, field class Behavior(Struct): pointId: int level: int class Equipment(Struct): level: Union[int, None] = field(default=0) tid: Union[int, None] = None promotion: Union[int, None] = field(default=0) rank: Union[int, None] = field(default=0) class SubAffix(Struct): affixId: int cnt: int step: Union[int, None] = field(default=0) class Relic(Struct): tid: int mainAffixId: int type_: int = field(name="type") subAffixList: Union[List[SubAffix], None] = field(default=[]) level: Union[int, None] = field(default=0) class Avatar(Struct): skillTreeList: List[Behavior] avatarId: int level: int equipment: Union[Equipment, None] = None relicList: Union[List[Relic], None] = field(default=[]) pos: Union[int, None] = field(default=0) rank: Union[int, None] = field(default=0) promotion: Union[int, None] = field(default=0) class Challenge(Struct): scheduleMaxLevel: Union[int, None] = None MazeGroupIndex: Union[int, None] = None PreMazeGroupIndex: Union[int, None] = None class ChallengeInfo(Struct): scheduleGroupId: int noneScheduleMaxLevel: Union[int, None] = None scheduleMaxLevel: int class PlayerSpaceInfo(Struct): maxRogueChallengeScore: int equipmentCount: int avatarCount: int achievementCount: int challengeInfo: ChallengeInfo class PlayerDetailInfo(Struct): assistAvatarList: Union[List[Avatar], None] platform: Union[int, str] isDisplayAvatar: bool avatarDetailList: Union[List[Avatar], None] uid: int friendCount: int worldLevel: int nickname: str level: int recordInfo: Union[PlayerSpaceInfo, None] headIcon: int signature: Union[str, None] = None Birthday: Union[int, None] = None class MihomoData(Struct): detailInfo: PlayerDetailInfo