"""LCD screen service package."""

from .logging import (
    BASE_DIR,
    HISTORY_DIR,
    LOG_FILE,
    LOG_FORMAT,
    LOGS_DIR,
    WORK_DIR,
    WORK_FILE,
)
from .hardware import (
    LCDFrameWriter,
    LCDHealthMonitor,
    LCDWatchdog,
    LCD_COLUMNS,
    LCD_ROWS,
    _blank_display,
    _initialize_lcd,
)
from .locks import (
    CHANNEL_BASE_NAMES,
    CHANNEL_ORDER_LOCK_NAME,
    CLOCK_LOCK_NAME,
    DEFAULT_SCROLL_MS,
    EVENT_DEFAULT_DURATION_SECONDS,
    EVENT_LOCK_GLOB,
    EVENT_LOCK_PREFIX,
    HIGH_LOCK_FILE,
    INSTALL_DATE_LOCK_NAME,
    LOCK_DIR,
    LOW_LOCK_FILE,
    SIMULATOR_STATE_FILE,
    SUITE_PORT_DEFAULT,
    SUITE_REACHABILITY_CACHE_SECONDS,
    SUITE_REACHABILITY_TIMEOUT_SECONDS,
    SUITE_UPTIME_LOCK_MAX_AGE,
    SUITE_UPTIME_LOCK_NAME,
    UPTIME_LOCK_NAME,
    LockPayload,
    _SUITE_AVAILABILITY_STATE,
    _SUITE_REACHABILITY_CACHE,
    _SIMULATOR_RUNNING_CACHE,
    _availability_seconds,
    _boot_delay_seconds,
    _boot_elapsed_seconds,
    _channel_lock_entries,
    _clear_low_lock_file,
    _down_seconds,
    _duration_from_lock,
    _event_lock_files,
    _event_lock_sort_key,
    _install_date,
    _load_channel_order,
    _load_channel_payloads,
    _load_low_channel_payloads,
    _on_seconds,
    _parse_channel_order,
    _parse_event_lock_file,
    _parse_start_timestamp,
    _read_lock_file,
    _read_lock_payload,
    _simulator_running,
    _suite_port,
    _suite_reachable,
    _uptime_seconds,
    psutil,
)
from apps.screens.startup_notifications import read_lcd_lock_file
from .rendering import (
    DEFAULT_FALLBACK_SCROLL_SEC,
    DisplayState,
    FateDeck,
    FATE_VECTOR,
    GAP_ANIMATION_CYCLE,
    GAP_ANIMATION_FRAMES,
    GAP_ANIMATION_FRAMES_PER_PAYLOAD,
    GAP_ANIMATION_SCROLL_MS,
    MIN_SCROLL_MS,
    SCROLL_PADDING,
    ScrollScheduler,
    CLOCK_DATE_FORMAT,
    CLOCK_TIME_FORMAT,
    ChannelCycle,
    _advance_display,
    _animation_payload,
    _ap_client_count,
    _ap_mode_enabled,
    _apply_low_payload_fallback,
    _clock_payload,
    _compact_stats_line,
    _draw_fate_vector,
    _format_count,
    _format_on_label,
    _format_storage_value,
    _format_temperature_value,
    _format_uptime_label,
    _has_visible_text,
    _internet_interface_label,
    _lcd_clock_enabled,
    _lcd_temperature_label,
    _lcd_temperature_label_from_sensors,
    _lcd_temperature_label_from_sysfs,
    _non_ascii_positions,
    _payload_has_text,
    _prepare_display_state,
    _refresh_uptime_payload,
    _select_low_payload,
    _stats_payload,
    _uptime_components,
    _use_fate_vector,
    _warn_on_non_ascii_payload,
)
from .runner import (
    ROTATION_SECONDS,
    _event_interrupt_requested,
    _handle_shutdown_request,
    _request_event_interrupt,
    _request_shutdown,
    _reset_event_interrupt_flag,
    _reset_shutdown_flag,
    _shutdown_requested,
    main,
)

__all__ = [
    "BASE_DIR",
    "HISTORY_DIR",
    "LOG_FILE",
    "LOG_FORMAT",
    "LOGS_DIR",
    "WORK_DIR",
    "WORK_FILE",
    "LCDFrameWriter",
    "LCDHealthMonitor",
    "LCDWatchdog",
    "LCD_COLUMNS",
    "LCD_ROWS",
    "LockPayload",
    "DEFAULT_FALLBACK_SCROLL_SEC",
    "DisplayState",
    "FateDeck",
    "FATE_VECTOR",
    "MIN_SCROLL_MS",
    "SCROLL_PADDING",
    "ScrollScheduler",
    "CLOCK_DATE_FORMAT",
    "CLOCK_TIME_FORMAT",
    "ChannelCycle",
    "ROTATION_SECONDS",
    "main",
    "read_lcd_lock_file",
]
