from typing import Union

def voltage() -> int:
    """
    Gets the battery voltage.

    ### Returns
    - The voltage in mV.
    """
    pass

def current() -> int:
    """
    Gets current flowing out of the battery.

    ### Returns
    - The current in in mA.
    """
    pass

def capacity_left() -> int:
    """
    Gets the remaining capacity as a percentage of a fully charged battery.

    ### Returns
    - The remaining battery capacity.
    """
    pass

def temperature() -> float:
    """
    Gets the temperature of the battery.

    ### Returns
    - The temperature in degrees Celsius.
    """
    pass

def charger_detect() -> Union[bool, int]:
    """
    Checks what type of charger was detected.

    ### Returns
    - See charging constants for all possible return values. Returns False if it failed to detect a charger.
    """
    pass

def info() -> dict:
    """
    Gets status information about the battery.

    This returns a dictionary of the form:

    ```
    {
        # Battery measurements as documented above.
        'battery_capacity_left': 100
        'temperature': 25.7,
        'charge_current': 248,
        'charge_voltage': 8294,

        # Filtered version of the battery voltage.
        'charge_voltage_filtered': 8287,

        # A list of active errors. See constants given below.
        'error_state': [0],

        # Charging state. See constants given below.
        'charger_state': 2,
    }
    ```
    ### Returns
    - Battery status information.
    """
    pass

# Battery status values
BATTERY_NO_ERROR = 0    #The battery is happy.
BATTERY_HUB_TEMPERATURE_CRITICAL_OUT_OF_RANGE= -1 #The battery temperature is outside of the expected range.
BATTERY_TEMPERATURE_OUT_OF_RANGE= -2 #The battery temperature is outside of the critical range.
BATTERY_TEMPERATURE_SENSOR_FAIL= -3 #The battery temperature sensor is not working.
BATTERY_BAD_BATTERY= -4 #Something is wrong with the battery.
BATTERY_VOLTAGE_TOO_LOW= -5 #The battery voltage is too low.
BATTERY_MISSING= -6 #No battery detected.

#Charger types
USB_CH_PORT_NONE= 0 #No charger detected.
USB_CH_PORT_SDP= 1 #Standard downstream port (typical USB port).
USB_CH_PORT_CDP= 2 #Charging Downstream Port (wall charger).
USB_CH_PORT_DCP= 3 #Dedicated charging port (high current USB port).

#Charging states
CHARGER_STATE_FAIL= -1 #There was a problem charging the battery.
CHARGER_STATE_DISCHARGING= 0 #The battery is discharging.
CHARGER_STATE_CHARGING_ONGOING= 1 #The battery is charging. 
CHARGER_STATE_CHARGING_COMPLETED= 2 #The battery is fully charged.