from pyasic.device.algorithm import MinerAlgo
from pyasic.device.models import MinerModel
from pyasic.miners.device.makes import WhatsMinerMake


class M31SPlusV10(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusV10

    expected_chips = 105
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256


class M31SPlusV100(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusV100

    expected_chips = 111
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256


class M31SPlusV20(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusV20

    expected_chips = 111
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256


class M31SPlusV30(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusV30

    expected_chips = 117
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256


class M31SPlusV40(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusV40

    expected_chips = 123
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256


class M31SPlusV50(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusV50

    expected_chips = 148
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256


class M31SPlusV60(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusV60

    expected_chips = 156
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256


class M31SPlusV80(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusV80

    expected_chips = 129
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256


class M31SPlusV90(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusV90

    expected_chips = 117
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256


class M31SPlusVE10(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusVE10

    expected_chips = 82
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256


class M31SPlusVE20(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusVE20

    expected_chips = 78
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256


class M31SPlusVE30(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusVE30

    expected_chips = 105
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256


class M31SPlusVE40(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusVE40

    expected_chips = 111
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256


class M31SPlusVE50(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusVE50

    expected_chips = 117
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256


class M31SPlusVE60(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusVE60

    expected_chips = None
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256


class M31SPlusVE80(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusVE80

    expected_chips = None
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256


class M31SPlusVF20(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusVF20

    expected_chips = 66
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256


class M31SPlusVF30(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusVF30

    expected_chips = None
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256


class M31SPlusVG20(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusVG20

    expected_chips = 66
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256


class M31SPlusVG30(WhatsMinerMake):
    raw_model = MinerModel.WHATSMINER.M31SPlusVG30

    expected_chips = 70
    expected_fans = 2
    expected_hashboards = 3
    algo = MinerAlgo.SHA256
