"""Module for light strip effects (LB*, KL*, KB*)."""

from __future__ import annotations

from typing import cast

EFFECT_AURORA = {
    "custom": 0,
    "id": "xqUxDhbAhNLqulcuRMyPBmVGyTOyEMEu",
    "brightness": 100,
    "name": "Aurora",
    "segments": [0],
    "expansion_strategy": 1,
    "enable": 1,
    "type": "sequence",
    "duration": 0,
    "transition": 1500,
    "direction": 4,
    "spread": 7,
    "repeat_times": 0,
    "sequence": [[120, 100, 100], [240, 100, 100], [260, 100, 100], [280, 100, 100]],
}
EFFECT_BUBBLING_CAULDRON = {
    "custom": 0,
    "id": "tIwTRQBqJpeNKbrtBMFCgkdPTbAQGfRP",
    "brightness": 100,
    "name": "Bubbling Cauldron",
    "segments": [0],
    "expansion_strategy": 1,
    "enable": 1,
    "type": "random",
    "hue_range": [100, 270],
    "saturation_range": [80, 100],
    "brightness_range": [50, 100],
    "duration": 0,
    "transition": 200,
    "init_states": [[270, 100, 100]],
    "fadeoff": 1000,
    "random_seed": 24,
    "backgrounds": [[270, 40, 50]],
}
EFFECT_CANDY_CANE = {
    "custom": 0,
    "id": "HCOttllMkNffeHjEOLEgrFJjbzQHoxEJ",
    "brightness": 100,
    "name": "Candy Cane",
    "segments": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
    "expansion_strategy": 1,
    "enable": 1,
    "type": "sequence",
    "duration": 700,
    "transition": 500,
    "direction": 1,
    "spread": 1,
    "repeat_times": 0,
    "sequence": [
        [0, 0, 100],
        [0, 0, 100],
        [360, 81, 100],
        [0, 0, 100],
        [0, 0, 100],
        [360, 81, 100],
        [360, 81, 100],
        [0, 0, 100],
        [0, 0, 100],
        [360, 81, 100],
        [360, 81, 100],
        [360, 81, 100],
        [360, 81, 100],
        [0, 0, 100],
        [0, 0, 100],
        [360, 81, 100],
    ],
}
EFFECT_CHRISTMAS = {
    "custom": 0,
    "id": "bwTatyinOUajKrDwzMmqxxJdnInQUgvM",
    "brightness": 100,
    "name": "Christmas",
    "segments": [0],
    "expansion_strategy": 1,
    "enable": 1,
    "type": "random",
    "hue_range": [136, 146],
    "saturation_range": [90, 100],
    "brightness_range": [50, 100],
    "duration": 5000,
    "transition": 0,
    "init_states": [[136, 0, 100]],
    "fadeoff": 2000,
    "random_seed": 100,
    "backgrounds": [[136, 98, 75], [136, 0, 0], [350, 0, 100], [350, 97, 94]],
}
EFFECT_FLICKER = {
    "custom": 0,
    "id": "bCTItKETDFfrKANolgldxfgOakaarARs",
    "brightness": 100,
    "name": "Flicker",
    "segments": [1],
    "expansion_strategy": 1,
    "enable": 1,
    "type": "random",
    "hue_range": [30, 40],
    "saturation_range": [100, 100],
    "brightness_range": [50, 100],
    "duration": 0,
    "transition": 0,
    "transition_range": [375, 500],
    "init_states": [[30, 81, 80]],
}
EFFECT_HANUKKAH = {
    "custom": 0,
    "id": "CdLeIgiKcQrLKMINRPTMbylATulQewLD",
    "brightness": 100,
    "name": "Hanukkah",
    "segments": [1],
    "expansion_strategy": 1,
    "enable": 1,
    "type": "random",
    "hue_range": [200, 210],
    "saturation_range": [0, 100],
    "brightness_range": [50, 100],
    "duration": 1500,
    "transition": 0,
    "transition_range": [400, 500],
    "init_states": [[35, 81, 80]],
}
EFFECT_HAUNTED_MANSION = {
    "custom": 0,
    "id": "oJnFHsVQzFUTeIOBAhMRfVeujmSauhjJ",
    "brightness": 80,
    "name": "Haunted Mansion",
    "segments": [80],
    "expansion_strategy": 2,
    "enable": 1,
    "type": "random",
    "hue_range": [45, 45],
    "saturation_range": [10, 10],
    "brightness_range": [0, 80],
    "duration": 0,
    "transition": 0,
    "transition_range": [50, 1500],
    "init_states": [[45, 10, 100]],
    "fadeoff": 200,
    "random_seed": 1,
    "backgrounds": [[45, 10, 100]],
}
EFFECT_ICICLE = {
    "custom": 0,
    "id": "joqVjlaTsgzmuQQBAlHRkkPAqkBUiqeb",
    "brightness": 70,
    "name": "Icicle",
    "segments": [0],
    "expansion_strategy": 1,
    "enable": 1,
    "type": "sequence",
    "duration": 0,
    "transition": 400,
    "direction": 4,
    "spread": 3,
    "repeat_times": 0,
    "sequence": [
        [190, 100, 70],
        [190, 100, 70],
        [190, 30, 50],
        [190, 100, 70],
        [190, 100, 70],
    ],
}
EFFECT_LIGHTNING = {
    "custom": 0,
    "id": "ojqpUUxdGHoIugGPknrUcRoyJiItsjuE",
    "brightness": 100,
    "name": "Lightning",
    "segments": [7, 20, 23, 32, 34, 35, 49, 65, 66, 74, 80],
    "expansion_strategy": 1,
    "enable": 1,
    "type": "random",
    "hue_range": [240, 240],
    "saturation_range": [10, 11],
    "brightness_range": [90, 100],
    "duration": 0,
    "transition": 50,
    "init_states": [[240, 30, 100]],
    "fadeoff": 150,
    "random_seed": 600,
    "backgrounds": [[200, 100, 100], [200, 50, 10], [210, 10, 50], [240, 10, 0]],
}
EFFECT_OCEAN = {
    "custom": 0,
    "id": "oJjUMosgEMrdumfPANKbkFmBcAdEQsPy",
    "brightness": 30,
    "name": "Ocean",
    "segments": [0],
    "expansion_strategy": 1,
    "enable": 1,
    "type": "sequence",
    "duration": 0,
    "transition": 2000,
    "direction": 3,
    "spread": 16,
    "repeat_times": 0,
    "sequence": [[198, 84, 30], [198, 70, 30], [198, 10, 30]],
}
EFFECT_RAINBOW = {
    "custom": 0,
    "id": "izRhLCQNcDzIKdpMPqSTtBMuAIoreAuT",
    "brightness": 100,
    "name": "Rainbow",
    "segments": [0],
    "expansion_strategy": 1,
    "enable": 1,
    "type": "sequence",
    "duration": 0,
    "transition": 1500,
    "direction": 1,
    "spread": 12,
    "repeat_times": 0,
    "sequence": [[0, 100, 100], [100, 100, 100], [200, 100, 100], [300, 100, 100]],
}
EFFECT_RAINDROP = {
    "custom": 0,
    "id": "QbDFwiSFmLzQenUOPnJrsGqyIVrJrRsl",
    "brightness": 30,
    "name": "Raindrop",
    "segments": [0],
    "expansion_strategy": 1,
    "enable": 1,
    "type": "random",
    "hue_range": [200, 200],
    "saturation_range": [10, 20],
    "brightness_range": [10, 30],
    "duration": 0,
    "transition": 1000,
    "init_states": [[200, 40, 100]],
    "fadeoff": 1000,
    "random_seed": 24,
    "backgrounds": [[200, 40, 0]],
}
EFFECT_SPRING = {
    "custom": 0,
    "id": "URdUpEdQbnOOechDBPMkKrwhSupLyvAg",
    "brightness": 100,
    "name": "Spring",
    "segments": [0],
    "expansion_strategy": 1,
    "enable": 1,
    "type": "random",
    "hue_range": [0, 90],
    "saturation_range": [30, 100],
    "brightness_range": [90, 100],
    "duration": 600,
    "transition": 0,
    "transition_range": [2000, 6000],
    "init_states": [[80, 30, 100]],
    "fadeoff": 1000,
    "random_seed": 20,
    "backgrounds": [[130, 100, 40]],
}
EFFECT_VALENTINES = {
    "custom": 0,
    "id": "QglBhMShPHUAuxLqzNEefFrGiJwahOmz",
    "brightness": 100,
    "name": "Valentines",
    "segments": [0],
    "expansion_strategy": 1,
    "enable": 1,
    "type": "random",
    "hue_range": [340, 340],
    "saturation_range": [30, 40],
    "brightness_range": [90, 100],
    "duration": 600,
    "transition": 2000,
    "init_states": [[340, 30, 100]],
    "fadeoff": 3000,
    "random_seed": 100,
    "backgrounds": [[340, 20, 50], [20, 50, 50], [0, 100, 50]],
}

EFFECTS_LIST_V1 = [
    EFFECT_AURORA,
    EFFECT_BUBBLING_CAULDRON,
    EFFECT_CANDY_CANE,
    EFFECT_CHRISTMAS,
    EFFECT_FLICKER,
    EFFECT_HANUKKAH,
    EFFECT_HAUNTED_MANSION,
    EFFECT_ICICLE,
    EFFECT_LIGHTNING,
    EFFECT_OCEAN,
    EFFECT_RAINBOW,
    EFFECT_RAINDROP,
    EFFECT_SPRING,
    EFFECT_VALENTINES,
]

EFFECT_NAMES_V1: list[str] = [cast(str, effect["name"]) for effect in EFFECTS_LIST_V1]
EFFECT_MAPPING_V1 = {effect["name"]: effect for effect in EFFECTS_LIST_V1}