from typing import Dict, Optional from pydantic import BaseModel, Field from python_genshin_artifact.models.damage.result import DamageResult class DamageAnalysis(BaseModel): atk: Dict[str, float] atk_ratio: Dict[str, float] hp: Dict[str, float] hp_ratio: Dict[str, float] def_: Dict[str, float] = Field(alias='def') def_ratio: Dict[str, float] em: Dict[str, float] em_ratio: Dict[str, float] extra_damage: Dict[str, float] bonus: Dict[str, float] critical: Dict[str, float] critical_damage: Dict[str, float] melt_enhance: Dict[str, float] vaporize_enhance: Dict[str, float] healing_bonus: Dict[str, float] shield_strength: Dict[str, float] spread_compose: Dict[str, float] aggravate_compose: Dict[str, float] def_minus: Dict[str, float] def_penetration: Dict[str, float] res_minus: Dict[str, float] element: str is_heal: bool is_shield: bool normal: DamageResult melt: Optional[DamageResult] vaporize: Optional[DamageResult] spread: Optional[DamageResult] aggravate: Optional[DamageResult]