from enum import IntEnum


class CCPullUp(IntEnum):
    """
    Class `CCPullUp` contains all possible variants of CC Pull Up.
    """
    Current_05_09A = 0
    Current_1_5A = 1
    Current_3A = 2
    Unknown = 3


class PowerRole(IntEnum):
    """
    Class `PowerRole` contains all possible variants of device power role.
    """
    Source = 0
    Sink = 1


class FrSwapCurrent(IntEnum):
    """
    Class `FrSwapCurrent` contains all possible variants of FR Swap current.
    """
    Disable = 0
    EnableDefaultUSBPower = 1
    Enable_1_5A_5V = 2
    Enable_3A_5V = 3


class PdcDeviceRole(IntEnum):
    """
    Class `PdcDeviceRole` contains all possible variants of PDC device role.
    """
    UFP = 0
    DFP = 1
    DRP = 2
    Unknown = 3


class PDMode(IntEnum):
    """
    Class `PDMode` contains all possible variants of PD modes.
    """
    NormalPD = 0
    LegacyUSBSource = 1
    LegacyUSBSink = 2
    Unknown = 3


class USB3Mode(IntEnum):
    """
    Class `USB3Mode` contains all possible variants of USB-3 modes.
    """
    Disabled = 0
    EnabledGen1 = 1
    EnabledGen2 = 2
    Unknown = 3


class DRPTryMode(IntEnum):
    """
    Class `DRPTryMode` contains all possible variants of DRP behavior modes.
    """
    PureDRP = 0
    DRP_try_SNK = 1
    DRP_try_SRC = 2
    Unknown = 3


class CableControlOrientation(IntEnum):
    """
    Class `CableControlOrientation` contains all possible variants of orientation.
    """
    CC1 = 0
    CC2 = 1


class DifferentialPair(IntEnum):
    """
    Class `DifferentialPair` contains all possible variants of differential pairs.
    """
    OnePair = 0
    TwoPair = 1


class ContractTypePriority(IntEnum):
    """
    Class `ContractTypePriority` contains all possible variants of contract type priority.
    """
    HigherCurrent = 0
    HigherVoltage = 1
    HigherPower = 2
    Unknown = 3


class InternalResistance(IntEnum):
    """
    Class `InternalResistance` contains all possible variants of internal resistance.
    """
    Disable = 1
    Resistance_10_Ohm = 40001
    Resistance_5_5_Ohm = 22001
    Resistance_3_55_Ohm = 14161
    Resistance_3_5_Ohm = 14001
    Resistance_2_6_Ohm = 10361
    Resistance_2_14_Ohm = 8521
    Resistance_1_76_Ohm = 7001


class ExternalResistance(IntEnum):
    """
    Class `ExternalResistance` contains all possible variants of external resistance.
    """
    Disable = 3
    Resistance_13_9_Ohm = 55603
    Resistance_10_6_Ohm = 42403
    Resistance_9_1_Ohm = 36403
    Resistance_7_6_Ohm = 30403
    Resistance_6_6_Ohm = 26403
    Resistance_5_6_Ohm = 22403
    Resistance_4_6_Ohm = 18403
    Resistance_3_6_Ohm = 14403
    Resistance_1_8_Ohm = 7203
