import os

here = os.path.abspath(os.path.dirname(__file__))

from bruhanimate.bruhscreen import Screen
from bruhanimate.bruheffects import (
    BaseEffect,
    StaticEffect,
    OffsetEffect,
    NoiseEffect,
    StarEffect,
    PlasmaEffect,
    GameOfLifeEffect,
    RainEffect,
    MatrixEffect,
    ChatbotEffect,
    GradientNoise,
    Loading,
    StringStreamer,
    Key,
    Line,
    DrawLines,
    _FLAKE,
    SnowEffect,
    _LIFE_COLORS,
    _LIFE_SCALES,
    _PLASMA_COLORS,
    _PLASMA_VALUES,
    _GRADIENTS,
    _VALID_DIRECTIONS,
    _OLD_GREY_SCALES,
    _GREY_SCALES,
    _WIND_DIRECTIONS,
    _NOISE,
    _FLAKES,
    _FLAKE_COLORS,
    _FLAKE_JUMPS,
    _NEXT_FLAKE_MOVE,
    _FLAKE_WEIGHT_CHARS,
    _FLAKE_FLIPS,
    _TWINKLE_COLORS
)
from bruhanimate.bruhffer import Buffer
from bruhanimate.bruhrenderer import (
    BaseRenderer,
    EffectRenderer,
    CenterRenderer,
    PanRenderer,
    FocusRenderer,
    BackgroundColorRenderer,
)
from bruhanimate import images
from bruhanimate.demos import line_demo, plasma_demo, snow_demo, holiday, stars_demo, twinkle_demo, noise_demo, matrix_demo, gol_demo, rain_demo, offset_demo, static_demo, audio_demo, chatbot_demo

__version__ = "0.2.46"
__valid_demos__ = [demo.split(".")[0] for demo in os.listdir(os.path.join(here, "demos")) if "init" not in demo and "pycache" not in demo]

__all__ = [
    "Screen",
    "plasma_demo",
    "line_demo",
    "holiday",
    "snow_demo",
    "stars_demo",
    "twinkle_demo",
    "noise_demo",
    "matrix_demo",
    "gol_demo",
    "rain_demo",
    "offset_demo",
    "static_demo",
    "audio_demo",
    "chatbot_demo",
    "BaseEffect",
    "StaticEffect",
    "OffsetEffect",
    "NoiseEffect",
    "StarEffect",
    "PlasmaEffect",
    "GameOfLifeEffect",
    "RainEffect",
    "MatrixEffect",
    "ChatbotEffect",
    "StringStreamer",
    "GradientNoise",
    "Loading",
    "Key",
    "DrawLines",
    "Line",
    "_FLAKE",
    "SnowEffect",
    "Buffer",
    "BaseRenderer",
    "EffectRenderer",
    "CenterRenderer",
    "PanRenderer",
    "FocusRenderer",
    "BackgroundColorRenderer",
    "images",
    "__version__",
    "__valid_demos__",
    "_LIFE_COLORS",
    "_LIFE_SCALES",
    "_PLASMA_COLORS",
    "_PLASMA_VALUES",
    "_GRADIENTS",
    "_VALID_DIRECTIONS",
    "_OLD_GREY_SCALES",
    "_GREY_SCALES",
    "_WIND_DIRECTIONS",
    "_NOISE",
    "_FLAKES",
    "_FLAKE_COLORS",
    "_FLAKE_JUMPS",
    "_NEXT_FLAKE_MOVE",
    "_FLAKE_WEIGHT_CHARS",
    "_FLAKE_FLIPS",
    "_TWINKLE_COLOR",
]
