"""
A list of supported Automower models
"""


# Copyright: Alistair Francis <alistair@alistair23.me>
class ModelInformation:
    def __init__(self, manufacturer: str, model: str):
        self.manufacturer = manufacturer
        self.model = model


MowerModels = {
    (0, 0): ModelInformation("Unknown", "Unknown (0,0)"),
    (5, 0): ModelInformation("Husqvarna", "Automower 420"),
    (7, 0): ModelInformation("Husqvarna", "Automower 430X"),
    (7, 1): ModelInformation("Husqvarna", "Automower 430XH"),
    (8, 0): ModelInformation("Husqvarna", "Automower 450X"),
    (8, 1): ModelInformation("Husqvarna", "Automower 450XH"),
    (11, 0): ModelInformation("Husqvarna", "Automower 310"),
    (12, 0): ModelInformation("Husqvarna", "Automower 315"),
    (12, 1): ModelInformation("Husqvarna", "Automower 315X"),
    (12, 23): ModelInformation("Husqvarna", "Automower 315X Limited Edition"),
    (14, 1): ModelInformation("Gardena", "SILENO City 250"),
    (14, 2): ModelInformation("Gardena", "SILENO City 300"),
    (14, 3): ModelInformation("Gardena", "SILENO City Unknown (14,3)"),
    (14, 4): ModelInformation("Gardena", "SILENO City Unknown (14,4)"),
    (14, 5): ModelInformation("Gardena", "SILENO City Unknown (14,5)"),
    (14, 6): ModelInformation("Gardena", "SILENO City 500"),
    (14, 7): ModelInformation("Gardena", "Smart SILENO City Unknown (14,7)"),
    (14, 8): ModelInformation("Gardena", "Smart SILENO City Unknown (14,8)"),
    (14, 9): ModelInformation("Gardena", "SILENO City Unknown (14,9)"),
    (14, 10): ModelInformation("Gardena", "SILENO City Unknown (14,10)"),
    (14, 11): ModelInformation("Gardena", "SILENO City Unknown (14,11)"),
    (14, 12): ModelInformation("Gardena", "Smart SILENO City Unknown (14,12)"),
    (14, 13): ModelInformation("Gardena", "SILENO City Unknown (14,13)"),
    (14, 14): ModelInformation("Gardena", "Smart SILENO City Unknown (14,14)"),
    (14, 15): ModelInformation("Gardena", "Smart SILENO City Unknown (14,15)"),
    (14, 16): ModelInformation("Gardena", "Smart SILENO City Unknown (14,16)"),
    (14, 17): ModelInformation("Gardena", "Smart SILENO City Unknown (14,17)"),
    (14, 18): ModelInformation("Gardena", "SILENO City Unknown (14,18)"),
    (15, 0): ModelInformation("Husqvarna", "Automower 440"),
    (16, 0): ModelInformation("Husqvarna", "Automower 550"),
    (16, 1): ModelInformation("Husqvarna", "Automower 550H"),
    (17, 0): ModelInformation("Husqvarna", "Automower 520"),
    (17, 1): ModelInformation("Husqvarna", "Automower 520H"),
    (18, 1): ModelInformation("Gardena", "SILENO Life 750"),
    (18, 2): ModelInformation("Gardena", "SILENO Life Unknown (18,2)"),
    (18, 3): ModelInformation("Gardena", "SILENO Life Unknown (18,3)"),
    (18, 4): ModelInformation("Gardena", "Smart SILENO Life Unknown (18,4)"),
    (18, 5): ModelInformation("Gardena", "Smart SILENO Life Unknown (18,5)"),
    (18, 6): ModelInformation("Gardena", "Smart SILENO Life Unknown (18,6)"),
    (18, 7): ModelInformation("Gardena", "SILENO Life Unknown (18,7)"),
    (18, 8): ModelInformation("Gardena", "SILENO Life Unknown (18,8)"),
    (18, 9): ModelInformation("Gardena", "Smart SILENO Life Unknown (18,9)"),
    (18, 10): ModelInformation("Gardena", "Smart SILENO Life Unknown (18,10)"),
    (18, 11): ModelInformation("Gardena", "Smart SILENO Life Unknown (18,11)"),
    (18, 12): ModelInformation("Gardena", "SILENO Life Unknown (18,12)"),
    (18, 13): ModelInformation("Gardena", "SILENO Life Unknown (18,13)"),
    (18, 14): ModelInformation("Gardena", "Smart SILENO Life Unknown (18,14)"),
    (18, 15): ModelInformation("Gardena", "Smart SILENO Life Unknown (18,15)"),
    (18, 16): ModelInformation("Gardena", "SILENO Life Unknown (18,16)"),
    (18, 17): ModelInformation("Gardena", "Smart SILENO Life Unknown (18,17)"),
    (19, 1): ModelInformation("Husqvarna", "Automower 115H"),
    (20, 0): ModelInformation("Husqvarna", "Automower 435X AWD"),
    (21, 0): ModelInformation("Husqvarna", "Automower 535 AWD"),
    (22, 1): ModelInformation("McCulloch", "Rob S400"),
    (22, 2): ModelInformation("McCulloch", "Rob S600"),
    (22, 3): ModelInformation("McCulloch", "Rob Unknown (22,3)"),
    (22, 4): ModelInformation("McCulloch", "Rob S800"),
    (23, 1): ModelInformation("Husqvarna", "Automower 305"),
    (23, 2): ModelInformation("Husqvarna", "Automower 310 Mark II"),
    (23, 3): ModelInformation("Husqvarna", "Automower 315 Mark II"),
    (24, 1): ModelInformation("Husqvarna", "Automower Ceora 546 EPOS"),
    (24, 2): ModelInformation("Husqvarna", "Automower Ceora 544 EPOS"),
    (25, 1): ModelInformation("Flymo", "Easilife Unknown (25,1)"),
    (25, 2): ModelInformation("Flymo", "Easilife Unknown (25,2)"),
    (25, 3): ModelInformation("Flymo", "Easilife Unknown (25,3)"),
    (25, 4): ModelInformation("Flymo", "Easilife Unknown (25,4)"),
    (26, 1): ModelInformation("Husqvarna", "Automower 550 EPOS"),
    (26, 2): ModelInformation("Husqvarna", "Automower 550H EPOS"),
    (26, 3): ModelInformation("Husqvarna", "Automower 520 EPOS"),
    (26, 4): ModelInformation("Husqvarna", "Automower 520H EPOS"),
    (27, 1): ModelInformation("Husqvarna", "Liberty Pilot EPAC"),
    (27, 2): ModelInformation("Husqvarna", "Liberty Pilot NA"),
    (27, 3): ModelInformation("Husqvarna", "Liberty Pilot HiCut"),
    (28, 1): ModelInformation("Husqvarna", "Automower 405X"),
    (28, 2): ModelInformation("Husqvarna", "Automower 415X"),
    (29, 1): ModelInformation("Gardena", "SILENO Minimo Unknown (29,1)"),
    (29, 2): ModelInformation("Gardena", "SILENO Minimo 400"),
    (29, 3): ModelInformation("Gardena", "SILENO Minimo 500"),
    (29, 4): ModelInformation("Gardena", "SILENO Minimo 250"),
    (29, 5): ModelInformation("Gardena", "SILENO Minimo Unknown (29,5)"),
    (29, 6): ModelInformation("Gardena", "SILENO Minimo Unknown (29,6)"),
    (29, 7): ModelInformation("Gardena", "SILENO Minimo Unknown (29,7)"),
    (29, 8): ModelInformation("Gardena", "SILENO Minimo Unknown (29,8)"),
    (29, 9): ModelInformation("Gardena", "SILENO Minimo 350"),
    (29, 10): ModelInformation("Gardena", "SILENO Minimo Unknown (29,10)"),
    (30, 1): ModelInformation("Flymo", "Easilife Go 200"),
    (30, 2): ModelInformation("Flymo", "Easilife Go Unknown (30,2)"),
    (30, 3): ModelInformation("Flymo", "Easilife Go 150"),
    (30, 4): ModelInformation("Flymo", "Easilife Go 250 (30,4)"),
    (30, 5): ModelInformation("Flymo", "Easilife Go 500"),
    (31, 1): ModelInformation("Husqvarna", "Automower 320 Nera"),
    (31, 2): ModelInformation("Husqvarna", "Automower 430X Nera"),
    (31, 3): ModelInformation("Husqvarna", "Automower 450X Nera"),
    (32, 1): ModelInformation("Husqvarna", "Automower Aspire R4"),
    (33, 1): ModelInformation("Husqvarna", "Automower 430X Egalite"),
    (39, 2): ModelInformation("Husqvarna", "Automower 310E Nera"),
    (39, 5): ModelInformation("Husqvarna", "Automower 410XE Nera"),
    (40, 1): ModelInformation("Husqvarna", "Automower 450X EPOS"),
    (40, 2): ModelInformation("Husqvarna", "Automower 450XH EPOS"),
}
