"""
charter_core
============

Package Python che centralizza TUTTE le regole Charter (business rules)
del Trading Engine AI di Mattia. Nato come FASE 1 del piano di
consolidamento 2026-07-14 (vedi AGENTS.md root del workspace).

Prima di charter_core, le regole Charter erano sparse in piu' file
del workspace AI TRADING ENGINE:
  - live_engine.py (righe 59-93):  dizionario SETUPS per live
  - web_solver_v6.py (righe 30-37): dict CHARTER per backtest
  - market_profile.py:               definizione 8 tipi CD
  - live_loop_aligned.py:            CLOSING_HOURS [2,6,10,14,18,22]
  - piu' altri magic number sparsi

Ora tutto vive qui, in un unico package versionato.

Sub-moduli:
  - charter_config:  SETUPS per-setup + CHARTER backtest + globali
  - cd_types:        8 tipi Candle Direction (enum + helper)
  - indicators:      parametri indicatori tecnici (BB/ROC/ATR/EMA/ADX)
  - paletti:         elenco "paletti" hard di Mattia (regole business)
  - charter_engine:  API riusabile Bot/Setup/BybitClient/Signal (FASE 3)

Regola Mattia 2026-07-14: questo package va importato dai 3 sub-repo
della famiglia (mavis/solver/verifier) come single source of truth.
Non duplicare i magic number altrove: importa da qui.
"""

__version__ = "1.1.0"  # bumpato a 1.1.0 con FASE 3 (charter_engine)
__author__ = "Mavis (consolidamento Charter 2026-07-14)"
__repo__ = "trading-engine-modules (root workspace, quarto repo)"

from .charter_config import (
    SETUPS,
    SETUPS_BY_NAME,
    SETUPS_BY_SYMBOL,
    CHARTER,
    GLOBAL_CONSTANTS,
    CLOSING_HOURS,
    MAX_OPEN_TRADES_PORTFOLIO,
    ENV_FILE_PATH,
    STATE_FILE_NAME,
    LOG_FILE_NAME,
    MIL_REPORT_PATH,
    get_setup,
    get_charter,
)

from .cd_types import (
    CDType,
    CD_BIT_NAMES,
    CD_DIMENSIONS,
    parse_cd_mask,
    cd_idx_to_name,
    cd_name_to_idx,
    is_cd_active_in_mask,
    active_cds_in_mask,
)

from .indicators import (
    BB_PARAMS,
    ROC_PARAMS,
    ATR_PARAMS,
    EMA50_PARAMS,
    ADX_PARAMS,
    compute_cd_from_row,
)

from .paletti import (
    PALETTI,
    PalettiCategory,
    is_paletto_violated,
    format_paletto_report,
    total_paletti_count,
)

from .charter_engine import (
    # dataclass riusabili
    Setup,
    Signal,
    # wrapper
    BybitClient,
    # classe principale
    Bot,
    # helper
    setups_from_list,
    compute_indicators_pine_faithful,
    detect_signal_pine_faithful,
    check_regime_pine_faithful,
)

__all__ = [
    # version
    "__version__",
    # charter_config
    "SETUPS", "SETUPS_BY_NAME", "SETUPS_BY_SYMBOL", "CHARTER",
    "GLOBAL_CONSTANTS", "CLOSING_HOURS", "MAX_OPEN_TRADES_PORTFOLIO",
    "ENV_FILE_PATH", "STATE_FILE_NAME", "LOG_FILE_NAME", "MIL_REPORT_PATH",
    "get_setup", "get_charter",
    # cd_types
    "CDType", "CD_BIT_NAMES", "CD_DIMENSIONS", "parse_cd_mask",
    "cd_idx_to_name", "cd_name_to_idx", "is_cd_active_in_mask",
    "active_cds_in_mask",
    # indicators
    "BB_PARAMS", "ROC_PARAMS", "ATR_PARAMS", "EMA50_PARAMS", "ADX_PARAMS",
    "compute_cd_from_row",
    # paletti
    "PALETTI", "PalettiCategory", "is_paletto_violated",
    "format_paletto_report", "total_paletti_count",
    # charter_engine (FASE 3)
    "Setup", "Signal", "BybitClient", "Bot", "setups_from_list",
    "compute_indicators_pine_faithful",
    "detect_signal_pine_faithful",
    "check_regime_pine_faithful",
]
