"""Attribute definitions for Pentair IntelliCenter.

This package contains all attribute definitions organized by type:
- constants: Type constants and attribute name constants
- body: Body of water (pool/spa) attributes
- circuit: Circuit and circuit group attributes
- equipment: Pump, heater, chemistry, and sensor attributes
- schedule: Schedule attributes
- system: System, panel, module, permit, and clock attributes
- misc: Remote, valve, external instrument, and other attributes
"""

from .body import BODY_ATTRIBUTES
from .circuit import CIRCGRP_ATTRIBUTES, CIRCUIT_ATTRIBUTES
from .constants import (
    # Attribute name constants
    ACT_ATTR,
    AVAIL_ATTR,
    BODY_ATTR,
    # Object type constants
    BODY_TYPE,
    BOOST_ATTR,
    CHEM_TYPE,
    CIRCGRP_TYPE,
    CIRCUIT_ATTR,
    CIRCUIT_TYPE,
    # Status constants
    COLOR_EFFECT_SUBTYPES,
    COMUART_ATTR,
    COOLING_ATTR,
    DLY_ATTR,
    ENABLE_ATTR,
    EXTINSTR_TYPE,
    FEATR_ATTR,
    FEATR_TYPE,
    GPM_ATTR,
    GROUP_ATTR,
    HEATER_ATTR,
    HEATER_TYPE,
    HEATING_ATTR,
    HNAME_ATTR,
    HTMODE_ATTR,
    LIGHT_EFFECTS,
    LIGHT_SUBTYPES,
    LISTORD_ATTR,
    LOTMP_ATTR,
    LSTTMP_ATTR,
    MODE_ATTR,
    MODULE_TYPE,
    NORMAL_ATTR,
    # Special values
    NULL_OBJNAM,
    OBJTYP_ATTR,
    ORPTNK_ATTR,
    ORPVAL_ATTR,
    PANEL_TYPE,
    PARENT_ATTR,
    PERMIT_ATTR,
    PERMIT_TYPE,
    PHTNK_ATTR,
    PHVAL_ATTR,
    PMPCIRC_TYPE,
    PRESS_TYPE,
    PRIM_ATTR,
    PROPNAME_ATTR,
    PUMP_STATUS_OFF,
    PUMP_STATUS_ON,
    PUMP_TYPE,
    PWR_ATTR,
    QUALTY_ATTR,
    READY_ATTR,
    REMBTN_TYPE,
    REMOTE_TYPE,
    RPM_ATTR,
    SALT_ATTR,
    SCHED_TYPE,
    SEC_ATTR,
    SELECT_ATTR,
    SENSE_TYPE,
    SHOMNU_ATTR,
    SMTSRT_ATTR,
    SNAME_ATTR,
    SOURCE_ATTR,
    SPEED_ATTR,
    STATIC_ATTR,
    STATUS_ATTR,
    STATUS_OFF,
    STATUS_ON,
    SUBTYP_ATTR,
    SUPER_ATTR,
    SYSTEM_TYPE,
    SYSTIM_TYPE,
    TEMP_ATTR,
    TIME_ATTR,
    TIMOUT_ATTR,
    UPDATE_ATTR,
    USE_ATTR,
    USER_PRIVILEGES,
    VACFLO_ATTR,
    VACTIM_ATTR,
    VALVE_TYPE,
    VER_ATTR,
    VOL_ATTR,
    # Enums
    HeaterType,
)
from .equipment import (
    CHEM_ATTRIBUTES,
    HEATER_ATTRIBUTES,
    PMPCIRC_ATTRIBUTES,
    PUMP_ATTRIBUTES,
    SENSE_ATTRIBUTES,
)
from .misc import (
    EXTINSTR_ATTRIBUTES,
    FEATR_ATTRIBUTES,
    PRESS_ATTRIBUTES,
    REMBTN_ATTRIBUTES,
    REMOTE_ATTRIBUTES,
    VALVE_ATTRIBUTES,
)
from .schedule import SCHED_ATTRIBUTES
from .system import (
    MODULE_ATTRIBUTES,
    PANEL_ATTRIBUTES,
    PERMIT_ATTRIBUTES,
    SYSTEM_ATTRIBUTES,
    SYSTIM_ATTRIBUTES,
)

# Master mapping of object types to their tracked attributes
ALL_ATTRIBUTES_BY_TYPE = {
    BODY_TYPE: BODY_ATTRIBUTES,
    CHEM_TYPE: CHEM_ATTRIBUTES,
    CIRCGRP_TYPE: CIRCGRP_ATTRIBUTES,
    CIRCUIT_TYPE: CIRCUIT_ATTRIBUTES,
    EXTINSTR_TYPE: EXTINSTR_ATTRIBUTES,
    FEATR_TYPE: FEATR_ATTRIBUTES,
    HEATER_TYPE: HEATER_ATTRIBUTES,
    MODULE_TYPE: MODULE_ATTRIBUTES,
    PANEL_TYPE: PANEL_ATTRIBUTES,
    PERMIT_TYPE: PERMIT_ATTRIBUTES,
    PMPCIRC_TYPE: PMPCIRC_ATTRIBUTES,
    PRESS_TYPE: PRESS_ATTRIBUTES,
    PUMP_TYPE: PUMP_ATTRIBUTES,
    REMBTN_TYPE: REMBTN_ATTRIBUTES,
    REMOTE_TYPE: REMOTE_ATTRIBUTES,
    SCHED_TYPE: SCHED_ATTRIBUTES,
    SENSE_TYPE: SENSE_ATTRIBUTES,
    SYSTEM_TYPE: SYSTEM_ATTRIBUTES,
    SYSTIM_TYPE: SYSTIM_ATTRIBUTES,
    VALVE_TYPE: VALVE_ATTRIBUTES,
}

__all__ = [
    # Enums
    "HeaterType",
    # Status constants
    "STATUS_ON",
    "STATUS_OFF",
    "PUMP_STATUS_ON",
    "PUMP_STATUS_OFF",
    "LIGHT_SUBTYPES",
    "COLOR_EFFECT_SUBTYPES",
    "LIGHT_EFFECTS",
    # Special values
    "NULL_OBJNAM",
    # Object type constants
    "BODY_TYPE",
    "CHEM_TYPE",
    "CIRCGRP_TYPE",
    "CIRCUIT_TYPE",
    "EXTINSTR_TYPE",
    "FEATR_TYPE",
    "HEATER_TYPE",
    "MODULE_TYPE",
    "PANEL_TYPE",
    "PERMIT_TYPE",
    "PMPCIRC_TYPE",
    "PRESS_TYPE",
    "PUMP_TYPE",
    "REMBTN_TYPE",
    "REMOTE_TYPE",
    "SCHED_TYPE",
    "SENSE_TYPE",
    "SYSTEM_TYPE",
    "SYSTIM_TYPE",
    "VALVE_TYPE",
    # Attribute name constants
    "ACT_ATTR",
    "AVAIL_ATTR",
    "BODY_ATTR",
    "BOOST_ATTR",
    "CIRCUIT_ATTR",
    "COMUART_ATTR",
    "COOLING_ATTR",
    "DLY_ATTR",
    "ENABLE_ATTR",
    "FEATR_ATTR",
    "GPM_ATTR",
    "GROUP_ATTR",
    "HEATER_ATTR",
    "HEATING_ATTR",
    "HNAME_ATTR",
    "HTMODE_ATTR",
    "LISTORD_ATTR",
    "LOTMP_ATTR",
    "LSTTMP_ATTR",
    "MODE_ATTR",
    "NORMAL_ATTR",
    "OBJTYP_ATTR",
    "ORPTNK_ATTR",
    "ORPVAL_ATTR",
    "PARENT_ATTR",
    "PERMIT_ATTR",
    "PHTNK_ATTR",
    "PHVAL_ATTR",
    "PRIM_ATTR",
    "PROPNAME_ATTR",
    "PWR_ATTR",
    "QUALTY_ATTR",
    "READY_ATTR",
    "RPM_ATTR",
    "SALT_ATTR",
    "SEC_ATTR",
    "SELECT_ATTR",
    "SHOMNU_ATTR",
    "SMTSRT_ATTR",
    "SNAME_ATTR",
    "SOURCE_ATTR",
    "SPEED_ATTR",
    "STATIC_ATTR",
    "STATUS_ATTR",
    "SUBTYP_ATTR",
    "SUPER_ATTR",
    "TEMP_ATTR",
    "TIME_ATTR",
    "TIMOUT_ATTR",
    "UPDATE_ATTR",
    "USE_ATTR",
    "USER_PRIVILEGES",
    "VACFLO_ATTR",
    "VACTIM_ATTR",
    "VER_ATTR",
    "VOL_ATTR",
    # Attribute sets
    "ALL_ATTRIBUTES_BY_TYPE",
    "BODY_ATTRIBUTES",
    "CHEM_ATTRIBUTES",
    "CIRCGRP_ATTRIBUTES",
    "CIRCUIT_ATTRIBUTES",
    "EXTINSTR_ATTRIBUTES",
    "FEATR_ATTRIBUTES",
    "HEATER_ATTRIBUTES",
    "MODULE_ATTRIBUTES",
    "PANEL_ATTRIBUTES",
    "PERMIT_ATTRIBUTES",
    "PMPCIRC_ATTRIBUTES",
    "PRESS_ATTRIBUTES",
    "PUMP_ATTRIBUTES",
    "REMBTN_ATTRIBUTES",
    "REMOTE_ATTRIBUTES",
    "SCHED_ATTRIBUTES",
    "SENSE_ATTRIBUTES",
    "SYSTEM_ATTRIBUTES",
    "SYSTIM_ATTRIBUTES",
    "VALVE_ATTRIBUTES",
]
