from backend.condition.domain.aspect_type import AspectType
from backend.condition.domain.element_type import ElementType
from backend.condition.domain.mapping.element_mapping import ElementMapping


PEABODY_ELEMENT_MAP = {
    # ==========================================================
    # PROPERTY / GENERAL
    # ==========================================================
    (100, 1): ElementMapping(
        elementType=ElementType.PROPERTY,
        aspect_type=AspectType.TYPE,
    ),
    # (100, 3): ElementMapping(element=Element.PROPERTY, aspect_type=AspectType.AGE),
    # (100, 14): ElementMapping(element="property", aspect_type="construction_type"),
    (50, 2): ElementMapping(
        elementType=ElementType.CARBON_MONOXIDE_DETECTION,
        aspect_type=AspectType.TYPE,
    ),
    (50, 3): ElementMapping(
        elementType=ElementType.CCU,
        aspect_type=AspectType.TYPE,
    ),
    (50, 7): ElementMapping(
        elementType=ElementType.DISABLED_HOIST_TRACKING,
        aspect_type=AspectType.PRESENCE,
    ),
    (50, 11): ElementMapping(
        elementType=ElementType.HEAT_DETECTION,
        aspect_type=AspectType.TYPE,
    ),
    (50, 21): ElementMapping(
        elementType=ElementType.SMOKE_DETECTION,
        aspect_type=AspectType.TYPE,
    ),
    (50, 22): ElementMapping(
        elementType=ElementType.STAIRLIFT,
        aspect_type=AspectType.PRESENCE,
    ),
    (50, 26): ElementMapping(
        elementType=ElementType.DISABLED_FACILITIES,
        aspect_type=AspectType.TYPE,
    ),
    (100, 3): ElementMapping(
        elementType=ElementType.PROPERTY,
        aspect_type=AspectType.AGE_BAND,
    ),
    (100, 14): ElementMapping(
        elementType=ElementType.PROPERTY,
        aspect_type=AspectType.CONSTRUCTION_TYPE,
    ),
    (100, 16): ElementMapping(
        elementType=ElementType.PROPERTY,
        aspect_type=AspectType.CLASSIFICATION,
    ),
    (210, 2): ElementMapping(
        elementType=ElementType.PASSENGER_LIFT,
        aspect_type=AspectType.TYPE,
    ),
    # ==========================================================
    # EXTERNAL – WALLS
    # ==========================================================
    (50, 16): ElementMapping(
        elementType=ElementType.PARTY_WALL_FIRE_BREAK,
        aspect_type=AspectType.PRESENCE,
    ),
    (53, 1): ElementMapping(
        elementType=ElementType.BOUNDARY_WALLS,
        aspect_type=AspectType.PRESENCE,
    ),
    (53, 4): ElementMapping(
        elementType=ElementType.EXTERNAL_DECORATION,
        aspect_type=AspectType.PRESENCE,
    ),
    (53, 5): ElementMapping(
        elementType=ElementType.EXTERNAL_NOISE_INSULATION,
        aspect_type=AspectType.ADEQUACY,
    ),
    (53, 14): ElementMapping(
        elementType=ElementType.GARAGE_WALLS,
        aspect_type=AspectType.MATERIAL,
    ),
    (53, 23): ElementMapping(
        elementType=ElementType.EXTERNAL_WALL,
        aspect_type=AspectType.FINISH,
    ),
    (53, 30): ElementMapping(
        elementType=ElementType.EXTERNAL_WALL,
        aspect_type=AspectType.FINISH,
        aspect_instance=2,
    ),
    (53, 36): ElementMapping(
        elementType=ElementType.EXTERNAL_WALL,
        aspect_type=AspectType.INSULATION,
    ),
    (53, 40): ElementMapping(
        elementType=ElementType.SPANDREL_PANELS,
        aspect_type=AspectType.MATERIAL,
    ),
    (53, 41): ElementMapping(
        elementType=ElementType.CLADDING,
        aspect_type=AspectType.MATERIAL,
    ),
    (100, 15): ElementMapping(
        elementType=ElementType.EXTERNAL_DECORATION,
        aspect_type=AspectType.CONDITION,
    ),
    (120, 1): ElementMapping(
        elementType=ElementType.EXTERNAL_WALL,
        aspect_type=AspectType.STRUCTURE,
    ),
    (120, 2): ElementMapping(
        elementType=ElementType.EXTERNAL_WALL,
        aspect_type=AspectType.FINISH,
    ),
    (120, 3): ElementMapping(
        elementType=ElementType.EXTERNAL_WALL,
        aspect_type=AspectType.INSULATION,
    ),
    # ==========================================================
    # EXTERNAL – ROOFS
    # ==========================================================
    (50, 15): ElementMapping(
        elementType=ElementType.LOFT_INSULATION,
        aspect_type=AspectType.TYPE,
    ),
    (53, 2): ElementMapping(
        elementType=ElementType.CHIMNEY,
        aspect_type=AspectType.PRESENCE,
    ),
    (53, 6): ElementMapping(
        elementType=ElementType.FASCIA_SOFFIT_BARGEBOARDS,
        aspect_type=AspectType.MATERIAL,
    ),
    (53, 7): ElementMapping(
        elementType=ElementType.FLAT_ROOF_COVERING,
        aspect_type=AspectType.MATERIAL,
    ),
    (53, 13): ElementMapping(
        elementType=ElementType.GARAGE_ROOF,
        aspect_type=AspectType.MATERIAL,
    ),
    (53, 15): ElementMapping(
        elementType=ElementType.GUTTERS,
        aspect_type=AspectType.MATERIAL,
    ),
    (53, 21): ElementMapping(
        elementType=ElementType.PITCHED_ROOF_COVERING,
        aspect_type=AspectType.MATERIAL,
    ),
    (53, 22): ElementMapping(
        elementType=ElementType.PORCH_CANOPY,
        aspect_type=AspectType.TYPE,
    ),
    (53, 47): ElementMapping(
        elementType=ElementType.ROOF,
        aspect_type=AspectType.STRUCTURE,
    ),
    (110, 1): ElementMapping(
        elementType=ElementType.ROOF,
        aspect_type=AspectType.MATERIAL,
    ),
    (110, 2): ElementMapping(
        elementType=ElementType.ROOF,
        aspect_type=AspectType.MATERIAL,
        aspect_instance=1,
    ),
    (110, 3): ElementMapping(
        elementType=ElementType.CHIMNEY,
        aspect_type=AspectType.WORK_REQUIRED,
    ),
    (110, 4): ElementMapping(
        elementType=ElementType.FASCIA,
        aspect_type=AspectType.MATERIAL,
    ),
    (110, 5): ElementMapping(
        elementType=ElementType.SOFFIT,
        aspect_type=AspectType.MATERIAL,
    ),
    (110, 6): ElementMapping(
        elementType=ElementType.RAINWATER_GOODS,
        aspect_type=AspectType.MATERIAL,
    ),
    (110, 7): ElementMapping(
        elementType=ElementType.LOFT_INSULATION,
        aspect_type=AspectType.WORK_REQUIRED,  # possibly not the right aspect type
    ),
    (110, 8): ElementMapping(
        elementType=ElementType.PORCH_CANOPY,
        aspect_type=AspectType.MATERIAL,
    ),
    # ==========================================================
    # EXTERNAL – DOORS & WINDOWS
    # ==========================================================
    (50, 8): ElementMapping(
        elementType=ElementType.DOOR_ENTRY_HANDSET,
        aspect_type=AspectType.PRESENCE,
    ),
    (53, 8): ElementMapping(
        elementType=ElementType.FRONT_DOOR,
        aspect_type=AspectType.MATERIAL,
    ),
    (53, 12): ElementMapping(
        elementType=ElementType.GARAGE_DOOR,
        aspect_type=AspectType.MATERIAL,
    ),
    (53, 16): ElementMapping(
        elementType=ElementType.LINTEL,
        aspect_type=AspectType.PRESENCE,
    ),
    (53, 19): ElementMapping(
        elementType=ElementType.PATIO_FRENCH_DOOR,
        aspect_type=AspectType.MATERIAL,
    ),
    (53, 25): ElementMapping(
        elementType=ElementType.REAR_DOOR,
        aspect_type=AspectType.MATERIAL,
    ),
    (53, 29): ElementMapping(
        elementType=ElementType.SECONDARY_GLAZING,
        aspect_type=AspectType.PRESENCE,
    ),
    (53, 35): ElementMapping(
        elementType=ElementType.STORE_DOOR,
        aspect_type=AspectType.MATERIAL,
    ),
    (53, 38): ElementMapping(
        elementType=ElementType.EXTERNAL_WINDOWS,
        aspect_type=AspectType.TYPE,
    ),
    (53, 39): ElementMapping(
        elementType=ElementType.EXTERNAL_WINDOWS,
        aspect_type=AspectType.TYPE,
        aspect_instance=2,
    ),
    (53, 43): ElementMapping(
        elementType=ElementType.FRONT_DOOR,
        aspect_type=AspectType.TYPE,
    ),
    (130, 1): ElementMapping(
        elementType=ElementType.EXTERNAL_WINDOWS,
        aspect_type=AspectType.MATERIAL,
    ),
    (130, 2): ElementMapping(
        elementType=ElementType.COMMUNAL_WINDOWS,
        aspect_type=AspectType.MATERIAL,
    ),
    (140, 1): ElementMapping(
        elementType=ElementType.MAIN_DOOR,
        aspect_type=AspectType.MATERIAL,
    ),
    (140, 2): ElementMapping(
        elementType=ElementType.STORE_DOOR,
        aspect_type=AspectType.MATERIAL,
    ),  # Duplicate of (53, 35)
    (140, 3): ElementMapping(
        elementType=ElementType.GARAGE_DOOR,
        aspect_type=AspectType.MATERIAL,
    ),  # Duplicate of (53, 12)
    (140, 4): ElementMapping(
        elementType=ElementType.BLOCK_ENTRANCE_DOOR,
        aspect_type=AspectType.MATERIAL,
    ),
    # ==========================================================
    # EXTERNAL AREAS
    # ==========================================================
    (53, 3): ElementMapping(
        elementType=ElementType.DOWNPIPES,
        aspect_type=AspectType.MATERIAL,
    ),
    (53, 9): ElementMapping(
        elementType=ElementType.FRONT_FENCING,
        aspect_type=AspectType.MATERIAL,
    ),
    (53, 10): ElementMapping(
        elementType=ElementType.FRONT_GATE,
        aspect_type=AspectType.TYPE,
    ),
    (53, 17): ElementMapping(
        elementType=ElementType.PARKING_AREAS,
        aspect_type=AspectType.MATERIAL,
    ),
    (53, 18): ElementMapping(
        elementType=ElementType.PATHS_AND_HARDSTANDINGS,
        aspect_type=AspectType.MATERIAL,
    ),
    (53, 24): ElementMapping(
        elementType=ElementType.PRIVATE_BALCONY,
        aspect_type=AspectType.PRESENCE,
    ),
    (53, 26): ElementMapping(
        elementType=ElementType.REAR_FENCING,
        aspect_type=AspectType.MATERIAL,
    ),
    (53, 27): ElementMapping(
        elementType=ElementType.REAR_GATE,
        aspect_type=AspectType.TYPE,
    ),
    (53, 28): ElementMapping(
        elementType=ElementType.RETAINING_WALLS,
        aspect_type=AspectType.PRESENCE,
    ),
    (53, 31): ElementMapping(
        elementType=ElementType.SIDE_FENCING,
        aspect_type=AspectType.MATERIAL,
    ),
    (53, 32): ElementMapping(
        elementType=ElementType.SOIL_AND_VENT,
        aspect_type=AspectType.MATERIAL,
    ),
    (53, 34): ElementMapping(
        elementType=ElementType.SOLAR_THERMALS,
        aspect_type=AspectType.PRESENCE,
    ),
    (53, 44): ElementMapping(
        elementType=ElementType.GARAGE_STRUCTURE,
        aspect_type=AspectType.TYPE,
    ),
    (53, 45): ElementMapping(
        elementType=ElementType.BALCONY_BALUSTRADE,
        aspect_type=AspectType.MATERIAL,
    ),
    (150, 1): ElementMapping(
        elementType=ElementType.BLOCK_ENTRANCE_DOOR,
        aspect_type=AspectType.MATERIAL,
    ),
    (150, 2): ElementMapping(
        elementType=ElementType.PATHS_AND_HARDSTANDINGS,
        aspect_type=AspectType.MATERIAL,
    ),  # Duplicate of (53, 18) - correct?
    (150, 3): ElementMapping(
        elementType=ElementType.ROADS,
        aspect_type=AspectType.MATERIAL,
    ),
    (150, 4): ElementMapping(
        elementType=ElementType.BOUNDARY_WALLS,
        aspect_type=AspectType.MATERIAL,
    ),
    (150, 5): ElementMapping(
        elementType=ElementType.OUTBUILDINGS,
        aspect_type=AspectType.TYPE,
    ),
    (150, 6): ElementMapping(
        elementType=ElementType.GARAGE_STRUCTURE,
        aspect_type=AspectType.TYPE,
    ),
    # ==========================================================
    # INTERNAL – BATHROOMS & KITCHENS
    # ==========================================================
    (50, 1): ElementMapping(
        elementType=ElementType.SECONDARY_TOILET,
        aspect_type=AspectType.PRESENCE,
    ),
    (50, 9): ElementMapping(
        elementType=ElementType.BATHROOM_EXTRACTOR_FAN,
        aspect_type=AspectType.PRESENCE,
    ),
    (50, 9): ElementMapping(
        elementType=ElementType.KITCHEN,
        aspect_type=AspectType.TYPE,
    ),
    (50, 10): ElementMapping(
        elementType=ElementType.KITCHEN_EXTRACTOR_FAN,
        aspect_type=AspectType.PRESENCE,
    ),
    (50, 13): ElementMapping(
        elementType=ElementType.KITCHEN_SPACE_LAYOUT,
        aspect_type=AspectType.ADEQUACY,
    ),
    (50, 14): ElementMapping(
        elementType=ElementType.KITCHEN,
        aspect_type=AspectType.TYPE,
    ),
    (50, 17): ElementMapping(
        elementType=ElementType.BATHROOM,
        aspect_type=AspectType.LOCATION,
    ),
    (50, 18): ElementMapping(
        elementType=ElementType.BATHROOM,
        aspect_type=AspectType.TYPE,
    ),  # Actually "Primary bathroom type" - ok like this?
    (50, 20): ElementMapping(
        elementType=ElementType.BATHROOM,
        aspect_type=AspectType.TYPE,
        element_instance=2,
    ),  # Actually "Secondary bathroom type" - ok like this?
    (160, 1): ElementMapping(
        elementType=ElementType.KITCHEN,
        aspect_type=AspectType.CONDITION,
    ),
    (160, 2): ElementMapping(
        elementType=ElementType.KITCHEN_SPACE_LAYOUT,
        aspect_type=AspectType.ADEQUACY,
    ),
    (190, 1): ElementMapping(
        elementType=ElementType.BATHROOM,
        aspect_type=AspectType.CONDITION,
    ),
    (190, 2): ElementMapping(
        elementType=ElementType.SECONDARY_TOILET,
        aspect_type=AspectType.TYPE,
    ),
    # ==========================================================
    # COMMUNAL
    # ==========================================================
    (51, 1): ElementMapping(
        elementType=ElementType.COMMUNAL_AERIAL,
        aspect_type=AspectType.PRESENCE,
    ),
    (51, 2): ElementMapping(
        elementType=ElementType.COMMUNAL_AOV,
        aspect_type=AspectType.PRESENCE,
    ),
    (51, 3): ElementMapping(
        elementType=ElementType.COMMUNAL_BALCONY_WALKWAY,
        aspect_type=AspectType.PRESENCE,
    ),
    (51, 4): ElementMapping(
        elementType=ElementType.COMMUNAL_BATHROOM,
        aspect_type=AspectType.TYPE,
    ),
    (51, 5): ElementMapping(
        elementType=ElementType.COMMUNAL_BIN_STORE_DOORS,
        aspect_type=AspectType.PRESENCE,
    ),
    (51, 6): ElementMapping(
        elementType=ElementType.COMMUNAL_BIN_STORE_ROOF,
        aspect_type=AspectType.PRESENCE,
    ),
    (51, 7): ElementMapping(
        elementType=ElementType.COMMUNAL_BIN_STORE_WALLS,
        aspect_type=AspectType.MATERIAL,
    ),
    (51, 8): ElementMapping(
        elementType=ElementType.COMMUNAL_BMS,
        aspect_type=AspectType.PRESENCE,
    ),
    (51, 9): ElementMapping(
        elementType=ElementType.COMMUNAL_BOILER,
        aspect_type=AspectType.TYPE,
    ),
    (51, 10): ElementMapping(
        elementType=ElementType.COMMUNAL_BOOSTER_PUMP,
        aspect_type=AspectType.PRESENCE,
    ),
    (51, 11): ElementMapping(
        elementType=ElementType.COMMUNAL_CCTV,
        aspect_type=AspectType.PRESENCE,
    ),
    (51, 12): ElementMapping(
        elementType=ElementType.COMMUNAL_CIRCULATION_SPACE,
        aspect_type=AspectType.ADEQUACY,
    ),
    (51, 13): ElementMapping(
        elementType=ElementType.COMMUNAL_COLD_WATER_STORAGE,
        aspect_type=AspectType.PRESENCE,
    ),
    (51, 14): ElementMapping(
        elementType=ElementType.COMMUNAL_DOOR_ENTRY,
        aspect_type=AspectType.SYSTEM,
    ),
    (51, 15): ElementMapping(
        elementType=ElementType.COMMUNAL_DRY_RISER,
        aspect_type=AspectType.PRESENCE,
    ),
    (51, 16): ElementMapping(
        elementType=ElementType.COMMUNAL_EMERGENCY_LIGHTING,
        aspect_type=AspectType.PRESENCE,
    ),
    (51, 17): ElementMapping(
        elementType=ElementType.COMMUNAL_EXTERNAL_DOORS,
        aspect_type=AspectType.MATERIAL,
    ),
    (51, 19): ElementMapping(
        elementType=ElementType.COMMUNAL_FIRE_ALARM,
        aspect_type=AspectType.TYPE,
    ),
    (51, 20): ElementMapping(
        elementType=ElementType.COMMUNAL_INTERNAL_DECORATIONS,
        aspect_type=AspectType.PRESENCE,
    ),
    (51, 21): ElementMapping(
        elementType=ElementType.COMMUNAL_INTERNAL_DOORS,
        aspect_type=AspectType.MATERIAL,
    ),
    (51, 22): ElementMapping(
        elementType=ElementType.COMMUNAL_INTERNAL_FLOOR,
        aspect_type=AspectType.FINISH,
    ),
    (51, 23): ElementMapping(
        elementType=ElementType.COMMUNAL_KITCHEN,
        aspect_type=AspectType.TYPE,
    ),
    (51, 24): ElementMapping(
        elementType=ElementType.COMMUNAL_LATERAL_MAINS,
        aspect_type=AspectType.PRESENCE,
    ),
    (51, 25): ElementMapping(
        elementType=ElementType.COMMUNAL_LIGHTING,
        aspect_type=AspectType.PRESENCE,
    ),
    (51, 26): ElementMapping(
        elementType=ElementType.COMMUNAL_LIGHTING_CONDUCTOR,
        aspect_type=AspectType.PRESENCE,
    ),
    (51, 27): ElementMapping(
        elementType=ElementType.COMMUNAL_PASSENGER_LIFT,
        aspect_type=AspectType.TYPE,
    ),
    (51, 28): ElementMapping(
        elementType=ElementType.COMMUNAL_ENTRANCE,
        aspect_type=AspectType.MATERIAL,
        element_instance=1,
    ),
    (51, 30): ElementMapping(
        elementType=ElementType.COMMUNAL_ENTRANCE,
        aspect_type=AspectType.FINISH,
        element_instance=2,
    ),
    (51, 31): ElementMapping(
        elementType=ElementType.COMMUNAL_SPRINKLER,
        aspect_type=AspectType.PRESENCE,
    ),
    (51, 29): ElementMapping(
        elementType=ElementType.COMMUNAL_REFUSE_CHUTE,
        aspect_type=AspectType.PRESENCE,
    ),
    (51, 32): ElementMapping(
        elementType=ElementType.COMMUNAL_STAIRS,
        aspect_type=AspectType.FINISH,
    ),
    (51, 33): ElementMapping(
        elementType=ElementType.COMMUNAL_STORE_DOORS,
        aspect_type=AspectType.MATERIAL,
    ),
    (51, 34): ElementMapping(
        elementType=ElementType.COMMUNAL_STORE_ROOF,
        aspect_type=AspectType.MATERIAL,
    ),
    (51, 35): ElementMapping(
        elementType=ElementType.COMMUNAL_STORE_WALLS,
        aspect_type=AspectType.MATERIAL,
    ),
    (51, 36): ElementMapping(
        elementType=ElementType.COMMUNAL_WALKWAYS,
        aspect_type=AspectType.FINISH,
    ),
    (51, 37): ElementMapping(
        elementType=ElementType.COMMUNAL_WARDEN_CALL_SYSTEM,
        aspect_type=AspectType.PRESENCE,
    ),
    (51, 38): ElementMapping(
        elementType=ElementType.COMMUNAL_TOILETS,
        aspect_type=AspectType.TYPE,
    ),
    (51, 39): ElementMapping(
        elementType=ElementType.COMMUNAL_WET_RISER,
        aspect_type=AspectType.PRESENCE,
    ),
    (51, 40): ElementMapping(
        elementType=ElementType.COMMUNAL_PLUG_SOCKETS,
        aspect_type=AspectType.PRESENCE,
    ),
    (200, 1): ElementMapping(
        elementType=ElementType.COMMUNAL_BOILER,
        aspect_type=AspectType.TYPE,
    ),  # Duplicate of (51, 9) - correct?
    (200, 2): ElementMapping(
        elementType=ElementType.COMMUNAL_HEATING,
        aspect_type=AspectType.TYPE,
    ),
    (200, 3): ElementMapping(
        elementType=ElementType.COMMUNAL_ELECTRICS,
        aspect_type=AspectType.TYPE,
    ),
    (200, 4): ElementMapping(
        elementType=ElementType.COMMUNAL_FIRE_ALARM,
        aspect_type=AspectType.TYPE,
    ),
    (200, 5): ElementMapping(
        elementType=ElementType.COMMUNAL_LIFT,
        aspect_type=AspectType.TYPE,
    ),
    (200, 6): ElementMapping(
        elementType=ElementType.COMMUNAL_FLOOR_COVERING,
        aspect_type=AspectType.MATERIAL,
    ),
    (200, 7): ElementMapping(
        elementType=ElementType.COMMUNAL_KITCHEN,
        aspect_type=AspectType.TYPE,
    ),
    (200, 8): ElementMapping(
        elementType=ElementType.COMMUNAL_BATHROOM,
        aspect_type=AspectType.TYPE,
    ),  # Duplicate of (51, 4) - correct?
    (200, 9): ElementMapping(
        elementType=ElementType.COMMUNAL_TOILETS,
        aspect_type=AspectType.TYPE,
    ),  # Duplicate of (51, 38) - correct?
    (200, 10): ElementMapping(
        elementType=ElementType.COMMUNAL_GATES,
        aspect_type=AspectType.TYPE,
    ),
    # ==========================================================
    # INTERNAL – HEATING
    # ==========================================================
    (50, 4): ElementMapping(
        elementType=ElementType.HEATING_BOILER,
        aspect_type=AspectType.PRESENCE,
    ),  # This is actually "Central heating boiler" - ok like this?
    (50, 5): ElementMapping(
        elementType=ElementType.CENTRAL_HEATING,
        aspect_type=AspectType.EXTENT,
    ),
    (50, 6): ElementMapping(
        elementType=ElementType.COLD_WATER_STORAGE,
        aspect_type=AspectType.PRESENCE,
    ),
    (50, 12): ElementMapping(
        elementType=ElementType.HEATING_DISTRIBUTION,
        aspect_type=AspectType.TYPE,
    ),
    (50, 19): ElementMapping(
        elementType=ElementType.PROGRAMMABLE_HEATING,
        aspect_type=AspectType.TYPE,
    ),
    (50, 25): ElementMapping(
        elementType=ElementType.HEATING_BOILER,
        aspect_type=AspectType.TYPE,
    ),
    (170, 1): ElementMapping(
        elementType=ElementType.HEATING_BOILER,
        aspect_type=AspectType.TYPE,
    ),  # Duplicate of (50,25) - correct?
    (170, 2): ElementMapping(
        elementType=ElementType.HEATING_DISTRIBUTION,
        aspect_type=AspectType.TYPE,
    ),  # Duplicate of (50,12) - correct?
    (170, 3): ElementMapping(
        elementType=ElementType.SECONDARY_HEATING,
        aspect_type=AspectType.TYPE,
    ),
    (170, 4): ElementMapping(
        elementType=ElementType.COLD_WATER_STORAGE,
        aspect_type=AspectType.TYPE,
    ),
    (170, 5): ElementMapping(
        elementType=ElementType.HOT_WATER_SYSTEM,
        aspect_type=AspectType.TYPE,
    ),
    # ==========================================================
    # ELECTRICS
    # ==========================================================
    (50, 24): ElementMapping(
        elementType=ElementType.INTERNAL_WIRING,
        aspect_type=AspectType.MATERIAL,
    ),
    (180, 1): ElementMapping(
        elementType=ElementType.ELECTRICAL_WIRING,
        aspect_type=AspectType.WORK_REQUIRED,
    ),  # Not certain about the AspectType - only example in the sample data is "Full Rewire"
    (180, 2): ElementMapping(
        elementType=ElementType.CONSUMER_UNIT,
        aspect_type=AspectType.TYPE,
    ),
    (180, 3): ElementMapping(
        elementType=ElementType.SMOKE_DETECTION,
        aspect_type=AspectType.TYPE,
    ),  # Duplicate of (50, 21) - correct?
    (180, 4): ElementMapping(
        elementType=ElementType.CARBON_MONOXIDE_DETECTION,
        aspect_type=AspectType.TYPE,
    ),  # Duplicate of (50, 2) - correct?
    # ==========================================================
    # HHSRS
    # ==========================================================
    (54, 1): ElementMapping(
        elementType=ElementType.HHSRS_DAMP_AND_MOULD,
        aspect_type=AspectType.RISK,
    ),
    (54, 4): ElementMapping(
        elementType=ElementType.HHSRS_ASBESTOS_AND_MMF,
        aspect_type=AspectType.RISK,
    ),
    (54, 15): ElementMapping(
        elementType=ElementType.HHSRS_DOMESTIC_HYGIENE_PESTS_REFUSE,
        aspect_type=AspectType.RISK,
    ),
    (54, 29): ElementMapping(
        elementType=ElementType.HHSRS_STRUCTURAL_COLLAPSE,
        aspect_type=AspectType.RISK,
    ),
}
