# Type stubs for chanlun Rust bindings (_chanlun.so)
# Auto-generated — do not edit manually

from typing import Any, ClassVar, Optional, List, Dict, Tuple, Union
from datetime import datetime

# ========== Module-level functions ==========
def get_rs_log_level() -> str: ...
def set_rs_log_level(level: str) -> None: ...
def get_log_level() -> str: ...
def set_log_level(level: str) -> None: ...
def get_log_mode() -> str: ...
def set_log_mode(mode: str) -> None: ...
def get_cache_mode() -> str: ...
def set_cache_mode(mode: str) -> None: ...
def get_分型模式() -> bool: ...
def set_分型模式(value: bool) -> None: ...
def get_扩展线段模式() -> bool: ...
def set_扩展线段模式(value: bool) -> None: ...
def 转化为时间戳(ts: Any) -> int: ...
def 转化为时间戳_数字(ts: Any) -> int: ...
def K线相等(A: K线, B: K线, 浮点容差: float = 1e-9) -> Tuple[bool, str]: ...
def 缠论K线相等(A: 缠论K线, B: 缠论K线, 浮点容差: float = 1e-9) -> Tuple[bool, str]: ...
def 分型相等(A: 分型, B: 分型, 浮点容差: float = 1e-9) -> Tuple[bool, str]: ...
def 缺口相等(A: 缺口, B: 缺口, 浮点容差: float = 1e-9) -> Tuple[bool, str]: ...
def 线段特征相等(A: 线段特征, B: 线段特征, 浮点容差: float = 1e-9) -> Tuple[bool, str]: ...
def 中枢相等(A: 中枢, B: 中枢, 浮点容差: float = 1e-9) -> Tuple[bool, str]: ...
def 虚线相等(A: 虚线, B: 虚线, 浮点容差: float = 1e-9) -> Tuple[bool, str]: ...
def 观察者相等(A: 观察者, B: 观察者, 浮点容差: float = 1e-9) -> Tuple[bool, str]: ...
def 立体分析器相等(A: 立体分析器, B: 立体分析器, 浮点容差: float = 1e-9) -> Tuple[bool, str]: ...

# ========== Enum-like types ==========

class 买卖点类型:
    一买: ClassVar[买卖点类型]
    一卖: ClassVar[买卖点类型]
    二买: ClassVar[买卖点类型]
    二卖: ClassVar[买卖点类型]
    三买: ClassVar[买卖点类型]
    三卖: ClassVar[买卖点类型]
    T1买: ClassVar[买卖点类型]
    T1卖: ClassVar[买卖点类型]
    T1P买: ClassVar[买卖点类型]
    T1P卖: ClassVar[买卖点类型]
    T2买: ClassVar[买卖点类型]
    T2卖: ClassVar[买卖点类型]
    T2S买: ClassVar[买卖点类型]
    T2S卖: ClassVar[买卖点类型]
    T3A买: ClassVar[买卖点类型]
    T3A卖: ClassVar[买卖点类型]
    T3B买: ClassVar[买卖点类型]
    T3B卖: ClassVar[买卖点类型]
    @property
    def 是买点(self) -> bool: ...
    @property
    def 是卖点(self) -> bool: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...
    def __hash__(self) -> int: ...
    def __reduce__(self) -> tuple: ...

class 相对方向:
    向上: ClassVar[相对方向]
    向下: ClassVar[相对方向]
    向上缺口: ClassVar[相对方向]
    向下缺口: ClassVar[相对方向]
    衔接向上: ClassVar[相对方向]
    衔接向下: ClassVar[相对方向]
    顺: ClassVar[相对方向]
    逆: ClassVar[相对方向]
    同: ClassVar[相对方向]
    @property
    def 是否向上(self) -> bool: ...
    @property
    def 是否向下(self) -> bool: ...
    @property
    def 是否包含(self) -> bool: ...
    @property
    def 是否缺口(self) -> bool: ...
    @property
    def 是否衔接(self) -> bool: ...
    def 翻转(self) -> 相对方向: ...
    @classmethod
    def 分析(cls, 前高: float, 前低: float, 后高: float, 后低: float) -> 相对方向: ...
    @classmethod
    def 从序列中机选(cls, 数量: int, 可选方向: List[相对方向], 可重复: bool = True) -> List[相对方向]: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...
    def __hash__(self) -> int: ...
    def __reduce__(self) -> tuple: ...

class 分型结构:
    上: ClassVar[分型结构]
    下: ClassVar[分型结构]
    顶: ClassVar[分型结构]
    底: ClassVar[分型结构]
    散: ClassVar[分型结构]
    @classmethod
    def 分析(cls, 左: Any, 中: Any, 右: Any, 可以逆序包含: bool = False, 忽视顺序包含: bool = False) -> Optional[分型结构]: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...
    def __hash__(self) -> int: ...
    def __reduce__(self) -> tuple: ...

class 缺口:
    def __init__(self, 高: float, 低: float) -> None: ...
    @property
    def 高(self) -> float: ...
    @高.setter
    def 高(self, value: float) -> None: ...
    @property
    def 低(self) -> float: ...
    @低.setter
    def 低(self, value: float) -> None: ...
    @classmethod
    def 居中截取区间(cls, 起点: float, 终点: float, 比例: float = 0.15) -> Optional[缺口]: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...
    def __hash__(self) -> int: ...
    def __reduce__(self) -> tuple: ...

# ========== Indicators ==========

class 平滑异同移动平均线:
    @property
    def 时间戳(self) -> str: ...
    @property
    def 收盘价(self) -> float: ...
    @property
    def 快线周期(self) -> int: ...
    @property
    def 慢线周期(self) -> int: ...
    @property
    def 信号周期(self) -> int: ...
    @property
    def DIF(self) -> Optional[float]: ...
    @property
    def DEA(self) -> Optional[float]: ...
    @property
    def MACD柱(self) -> float: ...
    @property
    def 快线EMA(self) -> Optional[float]: ...
    @property
    def 慢线EMA(self) -> Optional[float]: ...
    @property
    def DEA_EMA(self) -> Optional[float]: ...
    @classmethod
    def 首次计算(cls, 初始收盘价: float, 初始时间: int, 快线周期: Optional[int] = None, 慢线周期: Optional[int] = None, 信号周期: Optional[int] = None) -> 平滑异同移动平均线: ...
    @classmethod
    def 首次计算_K线(cls, k线: Any, 计算方式: str, 快线周期: Optional[int] = None, 慢线周期: Optional[int] = None, 信号周期: Optional[int] = None) -> 平滑异同移动平均线: ...
    @classmethod
    def 增量计算(cls, 前一个MACD: 平滑异同移动平均线, 当前收盘价: float, 当前时间: int) -> 平滑异同移动平均线: ...
    @classmethod
    def 增量计算_K线(cls, 前一个MACD: 平滑异同移动平均线, 当前K线: Any, 计算方式: str) -> 平滑异同移动平均线: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...

class 相对强弱指数:
    @property
    def 时间戳(self) -> str: ...
    @property
    def 收盘价(self) -> float: ...
    @property
    def 周期(self) -> int: ...
    @property
    def 超买阈值(self) -> float: ...
    @property
    def 超卖阈值(self) -> float: ...
    @property
    def RSI_SMA周期(self) -> Optional[int]: ...
    @property
    def RSI(self) -> Optional[float]: ...
    @property
    def 平均上涨(self) -> Optional[float]: ...
    @property
    def 平均下跌(self) -> Optional[float]: ...
    @property
    def 上涨幅度(self) -> float: ...
    @property
    def 下跌幅度(self) -> float: ...
    @property
    def 平滑系数(self) -> float: ...
    @property
    def RSI_SMA(self) -> Optional[float]: ...
    @property
    def RSI历史队列(self) -> List[float]: ...
    @classmethod
    def 首次计算(cls, 初始收盘价: float, 初始时间: int, 周期: Optional[int] = None, 超买阈值: Optional[float] = None, 超卖阈值: Optional[float] = None, RSI_SMA周期: Optional[int] = None) -> 相对强弱指数: ...
    @classmethod
    def 首次计算_K线(cls, k线: Any, 计算方式: str, 周期: Optional[int] = None, 超买阈值: Optional[float] = None, 超卖阈值: Optional[float] = None, RSI_SMA周期: Optional[int] = None) -> 相对强弱指数: ...
    @classmethod
    def 增量计算(cls, 前一个RSI: 相对强弱指数, 当前收盘价: float, 当前时间: int) -> 相对强弱指数: ...
    @classmethod
    def 增量计算_K线(cls, 前一个RSI: 相对强弱指数, 当前K线: Any, 计算方式: str) -> 相对强弱指数: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...

class 随机指标:
    @property
    def 时间戳(self) -> str: ...
    @property
    def 最高价(self) -> float: ...
    @property
    def 最低价(self) -> float: ...
    @property
    def 收盘价(self) -> float: ...
    @property
    def N(self) -> int: ...
    @property
    def M1(self) -> int: ...
    @property
    def M2(self) -> int: ...
    @property
    def 超买阈值(self) -> float: ...
    @property
    def 超卖阈值(self) -> float: ...
    @property
    def RSV(self) -> Optional[float]: ...
    @property
    def K(self) -> Optional[float]: ...
    @property
    def D(self) -> Optional[float]: ...
    @property
    def J(self) -> Optional[float]: ...
    @property
    def 历史最高价队列(self) -> List[float]: ...
    @property
    def 历史最低价队列(self) -> List[float]: ...
    @property
    def 前一个RSV(self) -> Optional[float]: ...
    @property
    def 前一个K(self) -> Optional[float]: ...
    @property
    def 前一个D(self) -> Optional[float]: ...
    @classmethod
    def 首次计算(cls, 初始最高价: float, 初始最低价: float, 初始收盘价: float, 初始时间: int, N: Optional[int] = None, M1: Optional[int] = None, M2: Optional[int] = None, 超买阈值: Optional[float] = None, 超卖阈值: Optional[float] = None) -> 随机指标: ...
    @classmethod
    def 首次计算_K线(cls, k线: Any, _计算方式: str, RSV周期: Optional[int] = None, K值平滑周期: Optional[int] = None, D值平滑周期: Optional[int] = None, 超买阈值: Optional[float] = None, 超卖阈值: Optional[float] = None) -> 随机指标: ...
    @classmethod
    def 增量计算(cls, 前一个KDJ: 随机指标, 当前最高价: float, 当前最低价: float, 当前收盘价: float, 当前时间: int) -> 随机指标: ...
    @classmethod
    def 增量计算_K线(cls, 前一个KDJ: 随机指标, 当前K线: Any, _计算方式: str) -> 随机指标: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...

class 布林带:
    @property
    def 时间戳(self) -> int: ...
    @property
    def 周期(self) -> int: ...
    @property
    def 标准差倍数(self) -> float: ...
    @property
    def 上轨(self) -> float: ...
    @property
    def 中轨(self) -> float: ...
    @property
    def 下轨(self) -> float: ...
    @classmethod
    def 首次计算(cls, k线: Any, 计算方式: str, 周期: int = 20, 标准差倍数: float = 2.0) -> 布林带: ...
    @classmethod
    def 增量计算(cls, 前一个布林带: 布林带, 当前K线: Any, 计算方式: str) -> 布林带: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...

class 指标容器:
    def __init__(self) -> None: ...
    def 获取(self, 名称: str) -> Optional[Any]: ...
    def 设置(self, 名称: str, 值: Any) -> None: ...
    def 包含(self, 名称: str) -> bool: ...
    def keys(self) -> List[str]: ...
    def __getitem__(self, 名称: str) -> Any: ...
    def __getattr__(self, 名称: str) -> Any: ...
    def __contains__(self, 名称: str) -> bool: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...

class 指标:
    @classmethod
    def K线取值(cls, k线: Any, 指标计算方式: str) -> float: ...

class 均线工具:
    @staticmethod
    def 增量SMA(普K序列: List[Any], period: int, 计算方式: str) -> float: ...
    @staticmethod
    def 增量EMA(普K序列: List[Any], period: int, 计算方式: str, 前值: Optional[float] = None) -> float: ...

class 指标计算器:
    @staticmethod
    def 计算并挂载(当前K线: Any, 全序列: List[Any], 配置: 缠论配置) -> None: ...

# ========== K线 ==========

class K线:
    def __init__(self, 标识: str = "bar", 序号: int = 0, 周期: int = 60, 时间戳: int = 0, 高: float = 0.0, 低: float = 0.0, 开盘价: float = 0.0, 收盘价: float = 0.0, 成交量: float = 0.0) -> None: ...
    @property
    def 标识(self) -> str: ...
    @property
    def 序号(self) -> int: ...
    @property
    def 周期(self) -> int: ...
    @property
    def 时间戳(self) -> int: ...
    @property
    def 高(self) -> float: ...
    @property
    def 低(self) -> float: ...
    @property
    def 开盘价(self) -> float: ...
    @property
    def 收盘价(self) -> float: ...
    @property
    def 成交量(self) -> float: ...
    @property
    def 方向(self) -> 相对方向: ...
    @property
    def macd(self) -> Optional[平滑异同移动平均线]: ...
    @property
    def rsi(self) -> Optional[相对强弱指数]: ...
    @property
    def kdj(self) -> Optional[随机指标]: ...
    @property
    def 指标(self) -> 指标容器: ...
    @property
    def __dict__(self) -> Dict[str, Any]: ...
    @classmethod
    def 创建普K(cls, 标识: str, 时间戳: int, 开盘价: float, 最高价: float, 最低价: float, 收盘价: float, 成交量: float, 序号: Optional[int] = None, 周期: Optional[int] = None) -> K线: ...
    @classmethod
    def 保存到DAT文件(cls, 路径: str, K线序列: List[K线]) -> None: ...
    @classmethod
    def 读取大端字节数组(cls, 字节组: bytes, 周期: int, 标识: str) -> Optional[K线]: ...
    @classmethod
    def 获取MACD(cls, k线序列: List[K线], 始: K线, 终: K线) -> Dict[str, float]: ...
    @staticmethod
    def 截取(序列: List[K线], 始: K线, 终: K线) -> List[K线]: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...
    def 根据当前K线生成新K线(self, 方向: 相对方向, 居中: bool = False) -> K线: ...
    def __bytes__(self) -> bytes: ...
    def __eq__(self, other: Any) -> bool: ...
    def __hash__(self) -> int: ...

class 缠论K线:
    @property
    def 序号(self) -> int: ...
    @property
    def 时间戳(self) -> int: ...
    @property
    def 高(self) -> float: ...
    @property
    def 低(self) -> float: ...
    @property
    def 方向(self) -> 相对方向: ...
    @property
    def 分型(self) -> Optional[分型结构]: ...
    @property
    def 周期(self) -> int: ...
    @property
    def 标识(self) -> str: ...
    @property
    def 分型特征值(self) -> float: ...
    @property
    def 原始起始序号(self) -> int: ...
    @property
    def 原始结束序号(self) -> int: ...
    @property
    def 标的K线(self) -> K线: ...
    @property
    def 镜像(self) -> 缠论K线: ...
    @property
    def 与MACD柱子匹配(self) -> bool: ...
    @property
    def 与RSI匹配(self) -> bool: ...
    @property
    def 与KDJ匹配(self) -> bool: ...
    @property
    def 买卖点信息(self) -> Any: ...
    @property
    def __dict__(self) -> Dict[str, Any]: ...
    @classmethod
    def 时间戳对齐(cls, 基线: List[缠论K线], k线: 缠论K线) -> int: ...
    @classmethod
    def 创建缠K(cls, 时间戳: int, 高: float, 低: float, 方向: 相对方向, 结构: Optional[分型结构], 原始序号: int, 普k: K线, 之前: Optional[缠论K线] = None) -> 缠论K线: ...
    @classmethod
    def 分析(cls, 当前K线: K线, 缠K序列: List[缠论K线], 普K序列: List[K线], 配置: 缠论配置) -> Tuple[str, Optional[分型]]: ...
    @staticmethod
    def 截取(序列: List[缠论K线], 始: 缠论K线, 终: 缠论K线) -> List[缠论K线]: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...
    def __eq__(self, other: Any) -> bool: ...
    def __hash__(self) -> int: ...

# ========== Structure ==========

class 分型:
    def __init__(self, 左: Optional[缠论K线], 中: 缠论K线, 右: Optional[缠论K线]) -> None: ...
    @property
    def 左(self) -> Optional[缠论K线]: ...
    @property
    def 中(self) -> 缠论K线: ...
    @property
    def 右(self) -> Optional[缠论K线]: ...
    @property
    def 结构(self) -> 分型结构: ...
    @property
    def 时间戳(self) -> int: ...
    @property
    def 分型特征值(self) -> float: ...
    @property
    def _结构(self) -> 分型结构: ...
    @property
    def _时间戳(self) -> int: ...
    @property
    def _分型特征值(self) -> float: ...
    @property
    def 关系组(self) -> Optional[Tuple[相对方向, 相对方向, 相对方向]]: ...
    @property
    def 强度(self) -> str: ...
    @property
    def 与MACD柱子分型匹配(self) -> bool: ...
    @property
    def __dict__(self) -> Dict[str, Any]: ...
    @classmethod
    def 判断分型(cls, 左: 分型, 右: 分型, 模式: str = "中") -> bool: ...
    @staticmethod
    def 从缠K序列中获取分型(K线序列: List[缠论K线], 中: 缠论K线) -> Optional[分型]: ...
    @staticmethod
    def 向序列中添加(分型序列: Any, 当前分型: 分型) -> None: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...
    def __eq__(self, other: Any) -> bool: ...
    def __hash__(self) -> int: ...

class 虚线:
    def __init__(self, 序号: int, 标识: str, 文: 分型, 武: 分型, 级别: int, 有效性: bool = True) -> None: ...
    @property
    def 标识(self) -> str: ...
    @property
    def 序号(self) -> int: ...
    @property
    def 级别(self) -> int: ...
    @property
    def 文(self) -> 分型: ...
    @property
    def 武(self) -> 分型: ...
    @property
    def 有效性(self) -> bool: ...
    @property
    def 模式(self) -> str: ...
    @property
    def _特征序列_显示(self) -> bool: ...
    @_特征序列_显示.setter
    def _特征序列_显示(self, value: bool) -> None: ...
    @property
    def 特征序列(self) -> List[Optional[线段特征]]: ...
    @property
    def 短路修正(self) -> bool: ...
    @property
    def 确认K线(self) -> Optional[缠论K线]: ...
    @property
    def 前一缺口(self) -> Optional[缺口]: ...
    @property
    def 前一结束位置(self) -> Optional[虚线]: ...
    @property
    def 基础序列(self) -> List[虚线]: ...
    @property
    def 实_中枢序列(self) -> List[中枢]: ...
    @property
    def 虚_中枢序列(self) -> List[中枢]: ...
    @property
    def 合_中枢序列(self) -> List[中枢]: ...
    @property
    def 笔序列(self) -> List[虚线]: ...
    @property
    def 图表标题(self) -> str: ...
    @property
    def 方向(self) -> 相对方向: ...
    @property
    def 高(self) -> float: ...
    @property
    def 低(self) -> float: ...
    @property
    def __dict__(self) -> Dict[str, Any]: ...
    def 之前是(self, 之前: 虚线) -> bool: ...
    def 之后是(self, 之后: 虚线) -> bool: ...
    def 获取普K序列(self, 观察员: 观察者) -> List[K线]: ...
    def 获取缠K序列(self, 观察员: 观察者) -> List[缠论K线]: ...
    def 获取数据文本(self) -> str: ...
    @classmethod
    def 获取_武(cls, 实线: 虚线) -> 分型: ...
    @classmethod
    def 创建笔(cls, 文: 分型, 武: 分型, 有效性: bool = True) -> 虚线: ...
    @classmethod
    def 创建线段(cls, 虚线序列: List[虚线]) -> 虚线: ...
    @classmethod
    def 缠K买卖点模式(cls, 模式: str, 缠K: 缠论K线, 配置: 缠论配置) -> bool: ...
    @classmethod
    def 买卖点配置匹配(cls, 缠K: 缠论K线, 配置: 缠论配置) -> bool: ...
    @classmethod
    def 买卖点任意匹配(cls, 缠K: 缠论K线) -> bool: ...
    @classmethod
    def 买卖点全量匹配(cls, 缠K: 缠论K线) -> bool: ...
    @classmethod
    def 买卖点相对匹配(cls, 缠K: 缠论K线) -> bool: ...
    @classmethod
    def 计算MACD柱子均值(cls, 普K序列: List[K线], 实线: 虚线) -> float: ...
    @classmethod
    def 武之全量MACD均值(cls, 普K序列: List[K线], 实线: 虚线) -> bool: ...
    @classmethod
    def 武之MACD均值(cls, 普K序列: List[K线], 实线: 虚线) -> bool: ...
    @classmethod
    def 武之MACD极值(cls, 普K序列: List[K线], 实线: 虚线) -> bool: ...
    @classmethod
    def 计算MACD柱子均值_阴(cls, 普K序列: List[K线], 实线: 虚线) -> Optional[float]: ...
    @classmethod
    def 计算MACD柱子均值_阳(cls, 普K序列: List[K线], 实线: 虚线) -> Optional[float]: ...
    @classmethod
    def 武之MACD均值_阴(cls, 普K序列: List[K线], 实线: 虚线) -> bool: ...
    @classmethod
    def 武之MACD均值_阳(cls, 普K序列: List[K线], 实线: 虚线) -> bool: ...
    @classmethod
    def 计算K线序列MACD趋向背驰(cls, 普K序列: List[K线], 方向: 相对方向) -> Tuple[bool, bool, bool]: ...
    @classmethod
    def 计算MACD柱子分段(cls, k线序列: List[K线]) -> List[List[float]]: ...
    @classmethod
    def 密集区域按间隔(cls, 交叉标记: List[int], 最大间隔: int = 5, 最少交叉数: int = 3) -> List[Tuple[int, int, int]]: ...
    @classmethod
    def 统计MACD行为(cls, 普K序列: List[K线], 最大间隔: int = 8, 最少交叉数: int = 3) -> Dict[str, Any]: ...
    @classmethod
    def 买卖意义(cls, 实线: 虚线, 观察员: 观察者) -> Tuple[bool, str]: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...
    def __eq__(self, other: Any) -> bool: ...
    def __hash__(self) -> int: ...

class 线段特征:
    @property
    def 序号(self) -> int: ...
    @序号.setter
    def 序号(self, value: int) -> None: ...
    @property
    def 标识(self) -> str: ...
    @标识.setter
    def 标识(self, value: str) -> None: ...
    @property
    def 线段方向(self) -> 相对方向: ...
    @property
    def 基础序列(self) -> List[虚线]: ...
    @property
    def 图表标题(self) -> str: ...
    @property
    def 文(self) -> 分型: ...
    @property
    def 武(self) -> 分型: ...
    @property
    def 方向(self) -> 相对方向: ...
    @property
    def 高(self) -> float: ...
    @property
    def 低(self) -> float: ...
    @classmethod
    def 静态分析(cls, 虚线序列: List[虚线], 线段方向: 相对方向, 四象: str, 是否忽视: bool = False) -> List[线段特征]: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...

# ========== Algorithm ==========

class 背驰分析:
    @classmethod
    def MACD背驰(cls, 进入段: 虚线, 离开段: 虚线, K线序列: List[K线], 方式: str = "总") -> bool: ...
    @classmethod
    def 斜率背驰(cls, 进入段: 虚线, 离开段: 虚线) -> bool: ...
    @classmethod
    def 测度背驰(cls, 进入段: 虚线, 离开段: 虚线) -> bool: ...
    @classmethod
    def 全量背驰(cls, 进入段: 虚线, 离开段: 虚线, 普K序列: List[K线]) -> bool: ...
    @classmethod
    def 任意背驰(cls, 进入段: 虚线, 离开段: 虚线, 普K序列: List[K线]) -> bool: ...
    @classmethod
    def 配置背驰(cls, 进入段: 虚线, 离开段: 虚线, 普K序列: List[K线], 配置: 缠论配置) -> bool: ...
    @classmethod
    def 任选背驰(cls, 进入段: 虚线, 离开段: 虚线, 普K序列: List[K线]) -> bool: ...
    @classmethod
    def 背驰模式(cls, 进入段: 虚线, 离开段: 虚线, 普K序列: List[K线], 配置: 缠论配置, 模式: str) -> bool: ...
    @classmethod
    def MACD背驰_OBS(cls, 进入段: 虚线, 离开段: 虚线, 观察员: 观察者, 方式: str = "总") -> bool: ...
    @classmethod
    def 全量背驰_OBS(cls, 进入段: 虚线, 离开段: 虚线, 观察员: 观察者) -> bool: ...
    @classmethod
    def 任意背驰_OBS(cls, 进入段: 虚线, 离开段: 虚线, 观察员: 观察者) -> bool: ...
    @classmethod
    def 配置背驰_OBS(cls, 进入段: 虚线, 离开段: 虚线, 观察员: 观察者, 配置: 缠论配置) -> bool: ...
    @classmethod
    def 任选背驰_OBS(cls, 进入段: 虚线, 离开段: 虚线, 观察员: 观察者) -> bool: ...
    @classmethod
    def 背驰模式_OBS(cls, 进入段: 虚线, 离开段: 虚线, 观察员: 观察者, 配置: 缠论配置, 模式: str) -> bool: ...

class 笔:
    @classmethod
    def 以文会友(cls, 笔序列: List[虚线], 文: 分型) -> Optional[虚线]: ...
    @classmethod
    def 以武会友(cls, 笔序列: List[虚线], 武: 分型) -> Optional[虚线]: ...
    @classmethod
    def 根据缠K找笔(cls, 笔序列: List[虚线], 缠K: 缠论K线, 偏移: int = 1) -> Optional[虚线]: ...
    @classmethod
    def 分析(cls, 当前分型: Optional[分型], 分型序列: List[分型], 笔序列: List[虚线], 缠K序列: List[缠论K线], 普K序列: List[K线], 递归层次: int, 配置: 缠论配置) -> int: ...
    @classmethod
    def 获取所有停顿位置(cls, 筆: 虚线, 观察员: 观察者) -> List[虚线]: ...
    @classmethod
    def 是否背驰过(cls, 当前筆: 虚线, 观察员: 观察者) -> List[缠论K线]: ...

class 线段:
    @classmethod
    def 四象(cls, 段: 虚线) -> str: ...
    @classmethod
    def 获取缺口(cls, 段: 虚线) -> Optional[缺口]: ...
    @classmethod
    def 特征分型终结(cls, 段: 虚线) -> bool: ...
    @classmethod
    def 特征序列状态(cls, 段: 虚线) -> Tuple[bool, bool, bool]: ...
    @classmethod
    def 查找贯穿伤(cls, 段: 虚线) -> Optional[虚线]: ...
    @classmethod
    def 分割序列(cls, 段: 虚线, 所属中枢: Optional[中枢] = None) -> Tuple[List[虚线], List[虚线], List[虚线], Optional[虚线]]: ...
    @classmethod
    def 获取内部中枢序列(cls, 段: 虚线, 配置: 缠论配置) -> Tuple[List[中枢], List[中枢], List[中枢]]: ...
    @classmethod
    def 分析(cls, 笔序列: List[虚线], 线段序列: List[虚线], 配置: 缠论配置, 层级: int, 关系序列: Optional[List[相对方向]] = None) -> None: ...
    @classmethod
    def 扩展分析(cls, 虚线序列: List[虚线], 线段序列: List[虚线], 配置: 缠论配置) -> None: ...
    @classmethod
    def 判断线段内部是否背驰(cls, 当前段: 虚线, 观察员: 观察者) -> bool: ...
    @classmethod
    def 获取所有停顿位置(cls, 段: 虚线, 观察员: 观察者) -> List[虚线]: ...
    @classmethod
    def 是否背驰过(cls, 当前段: 虚线, 观察员: 观察者) -> List[缠论K线]: ...

class 中枢:
    def __init__(self, 序号: int, 标识: str, 级别: int, 基础序列: List[虚线]) -> None: ...
    @property
    def 序号(self) -> int: ...
    @property
    def 标识(self) -> str: ...
    @property
    def 级别(self) -> int: ...
    @property
    def 基础序列(self) -> List[虚线]: ...
    @property
    def 第三买卖线(self) -> Optional[虚线]: ...
    @property
    def 本级_第三买卖线(self) -> Optional[虚线]: ...
    @property
    def 图表标题(self) -> str: ...
    @property
    def 离开段(self) -> 虚线: ...
    @property
    def 方向(self) -> 相对方向: ...
    @property
    def 高(self) -> float: ...
    @property
    def 低(self) -> float: ...
    @property
    def 高高(self) -> float: ...
    @property
    def 低低(self) -> float: ...
    @property
    def 文(self) -> 分型: ...
    @property
    def 武(self) -> 分型: ...
    @property
    def __dict__(self) -> Dict[str, Any]: ...
    def 设置第三买卖线(self, 线: 虚线) -> None: ...
    def 获取序列(self) -> List[虚线]: ...
    def 获取数据文本(self) -> str: ...
    def 完整性(self, 虚实: str = "合") -> bool: ...
    def 获取扩展中枢(self, 扩展中枢: List[中枢], 配置: 缠论配置) -> None: ...
    def 当前状态(self) -> str: ...
    @classmethod
    def 基础检查(cls, 左: 虚线, 中: 虚线, 右: 虚线) -> bool: ...
    @classmethod
    def 创建(cls, 左: 虚线, 中: 虚线, 右: 虚线, 级别: int, 标识: str = "") -> 中枢: ...
    @classmethod
    def 分析(cls, 虚线序列: List[虚线], 中枢序列: List[中枢], 跳过首部: bool = True, 标识: str = "", 层级: int = 0) -> None: ...
    @classmethod
    def 从序列中获取中枢(cls, 虚线序列: List[虚线], 起始方向: 相对方向, 标识: str) -> Optional[中枢]: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...
    def __eq__(self, other: Any) -> bool: ...
    def __hash__(self) -> int: ...

# ========== Business ==========

class 基础买卖点:
    def __init__(self, 类型: 买卖点类型, 当前K线: K线, 买卖点分型: 分型, 备注: str, 中枢破位值: float) -> None: ...
    @property
    def 备注(self) -> str: ...
    @备注.setter
    def 备注(self, value: str) -> None: ...
    @property
    def 类型(self) -> 买卖点类型: ...
    @property
    def 买卖点分型(self) -> 分型: ...
    @property
    def 买卖点K线(self) -> 缠论K线: ...
    @property
    def 当前K线(self) -> K线: ...
    @property
    def 失效K线(self) -> Optional[K线]: ...
    @property
    def 终结K线(self) -> Optional[K线]: ...
    @property
    def 破位值(self) -> float: ...
    @property
    def 结构(self) -> Optional[分型结构]: ...
    @property
    def 偏移(self) -> int: ...
    @property
    def 失效偏移(self) -> int: ...
    @property
    def 有效性(self) -> bool: ...
    @property
    def 与MACD柱子匹配(self) -> bool: ...
    @property
    def 与MACD柱子分型匹配(self) -> bool: ...
    @property
    def __dict__(self) -> Dict[str, Any]: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...

class 买卖点(基础买卖点):
    @classmethod
    def 一卖点(cls, 买卖点分型: 分型, 当前K线: K线, 标识: str, 备注: str, 中枢破位值: float) -> 买卖点: ...
    @classmethod
    def 一买点(cls, 买卖点分型: 分型, 当前K线: K线, 标识: str, 备注: str, 中枢破位值: float) -> 买卖点: ...
    @classmethod
    def 二卖点(cls, 买卖点分型: 分型, 当前K线: K线, 标识: str, 备注: str, 中枢破位值: float) -> 买卖点: ...
    @classmethod
    def 二买点(cls, 买卖点分型: 分型, 当前K线: K线, 标识: str, 备注: str, 中枢破位值: float) -> 买卖点: ...
    @classmethod
    def 三卖点(cls, 买卖点分型: 分型, 当前K线: K线, 标识: str, 备注: str, 中枢破位值: float) -> 买卖点: ...
    @classmethod
    def 三买点(cls, 买卖点分型: 分型, 当前K线: K线, 标识: str, 备注: str, 中枢破位值: float) -> 买卖点: ...
    @classmethod
    def T1卖点(cls, 买卖点分型: 分型, 当前K线: K线, 标识: str, 备注: str, 中枢破位值: float) -> 买卖点: ...
    @classmethod
    def T1买点(cls, 买卖点分型: 分型, 当前K线: K线, 标识: str, 备注: str, 中枢破位值: float) -> 买卖点: ...
    @classmethod
    def T1P卖点(cls, 买卖点分型: 分型, 当前K线: K线, 标识: str, 备注: str, 中枢破位值: float) -> 买卖点: ...
    @classmethod
    def T1P买点(cls, 买卖点分型: 分型, 当前K线: K线, 标识: str, 备注: str, 中枢破位值: float) -> 买卖点: ...
    @classmethod
    def T2卖点(cls, 买卖点分型: 分型, 当前K线: K线, 标识: str, 备注: str, 中枢破位值: float) -> 买卖点: ...
    @classmethod
    def T2买点(cls, 买卖点分型: 分型, 当前K线: K线, 标识: str, 备注: str, 中枢破位值: float) -> 买卖点: ...
    @classmethod
    def T2S卖点(cls, 买卖点分型: 分型, 当前K线: K线, 标识: str, 备注: str, 中枢破位值: float) -> 买卖点: ...
    @classmethod
    def T2S买点(cls, 买卖点分型: 分型, 当前K线: K线, 标识: str, 备注: str, 中枢破位值: float) -> 买卖点: ...
    @classmethod
    def T3A卖点(cls, 买卖点分型: 分型, 当前K线: K线, 标识: str, 备注: str, 中枢破位值: float) -> 买卖点: ...
    @classmethod
    def T3A买点(cls, 买卖点分型: 分型, 当前K线: K线, 标识: str, 备注: str, 中枢破位值: float) -> 买卖点: ...
    @classmethod
    def T3B卖点(cls, 买卖点分型: 分型, 当前K线: K线, 标识: str, 备注: str, 中枢破位值: float) -> 买卖点: ...
    @classmethod
    def T3B买点(cls, 买卖点分型: 分型, 当前K线: K线, 标识: str, 备注: str, 中枢破位值: float) -> 买卖点: ...
    @classmethod
    def 生成买卖点(cls, 特征: str, 序号: str, 级别: str, 买卖点分型: 分型, 当前缠K: 缠论K线) -> 买卖点: ...

class 观察者:
    def __init__(self, 符号: str, 周期: int, 配置: 缠论配置 = ...) -> None: ...
    @property
    def 观察员(self) -> 观察者: ...
    @property
    def 标识(self) -> str: ...
    @property
    def 当前K线(self) -> Optional[K线]: ...
    @property
    def 当前缠K(self) -> Optional[缠论K线]: ...
    @property
    def 符号(self) -> str: ...
    @property
    def 周期(self) -> int: ...
    @property
    def 配置(self) -> 缠论配置: ...
    @property
    def 普通K线序列(self) -> List[K线]: ...
    @property
    def 基础缠K序列(self) -> List[缠论K线]: ...
    @基础缠K序列.setter
    def 基础缠K序列(self, value: List[缠论K线]) -> None: ...
    @property
    def 缠论K线序列(self) -> List[缠论K线]: ...
    @property
    def 分型序列(self) -> List[分型]: ...
    @property
    def 笔序列(self) -> List[虚线]: ...
    @property
    def 笔_中枢序列(self) -> List[中枢]: ...
    @property
    def 线段序列(self) -> List[虚线]: ...
    @property
    def 中枢序列(self) -> List[中枢]: ...
    @property
    def 扩展线段序列(self) -> List[虚线]: ...
    @property
    def 扩展中枢序列(self) -> List[中枢]: ...
    @property
    def 扩展线段序列_线段(self) -> List[虚线]: ...
    @property
    def 扩展中枢序列_线段(self) -> List[中枢]: ...
    @property
    def 线段_线段序列(self) -> List[虚线]: ...
    @property
    def 线段_中枢序列(self) -> List[中枢]: ...
    @property
    def 扩展线段序列_扩展线段(self) -> List[虚线]: ...
    @property
    def 扩展中枢序列_扩展线段(self) -> List[中枢]: ...
    @property
    def 线段分析层次(self) -> int: ...
    @线段分析层次.setter
    def 线段分析层次(self, value: int) -> None: ...
    @property
    def 扩展线段分析层次(self) -> int: ...
    @扩展线段分析层次.setter
    def 扩展线段分析层次(self, value: int) -> None: ...
    @property
    def 混合扩展线段分析层次(self) -> int: ...
    @混合扩展线段分析层次.setter
    def 混合扩展线段分析层次(self, value: int) -> None: ...
    @property
    def 线段序列组(self) -> List[List[虚线]]: ...
    @property
    def 中枢序列组(self) -> List[List[中枢]]: ...
    @property
    def 扩展线段序列组(self) -> List[List[虚线]]: ...
    @property
    def 扩展中枢序列组(self) -> List[List[中枢]]: ...
    @property
    def 混合扩展线段序列组(self) -> List[List[虚线]]: ...
    @property
    def 混合扩展中枢序列组(self) -> List[List[中枢]]: ...
    def 重置基础序列(self) -> None: ...
    def 增加原始K线(self, 普K: K线) -> None: ...
    def 投喂原始数据(self, 时间戳: int, 开: float, 高: float, 低: float, 收: float, 量: float) -> None: ...
    def 加载本地数据(self, 文件路径: str) -> None: ...
    def 静态重新分析(self) -> None: ...
    def 测试_保存数据(self, root: Optional[str] = None) -> str: ...
    @classmethod
    def 读取数据文件(cls, 观察员: 观察者, 文件路径: str, 配置: Optional[缠论配置] = None) -> 观察者: ...

class K线合成器:
    def __init__(self, 标识: str, 周期组: List[int]) -> None: ...
    @property
    def 标识(self) -> str: ...
    @property
    def 周期组(self) -> List[int]: ...
    def 投喂K线(self, 普K: K线) -> None: ...
    def 投喂(self, 时间戳: int, 开: float, 高: float, 低: float, 收: float, 量: float) -> None: ...
    def 获取当前K线(self, 周期: int) -> Optional[K线]: ...

class 立体分析器:
    def __init__(self, 符号: str, 周期组: List[int], 配置: Optional[缠论配置] = None, 配置组: Optional[Dict[int, 缠论配置]] = None) -> None: ...
    @property
    def 周期组(self) -> List[int]: ...
    @property
    def _单体分析器(self) -> Dict[int, 观察者]: ...
    def 投喂K线(self, 普K: K线) -> None: ...
    def 测试_保存数据(self, root: Optional[str] = None) -> None: ...

# ========== 缠论配置 (fields via __getattr__/__setattr__) ==========

class 缠论配置:
    def __init__(self, **kwargs: Any) -> None: ...
    def to_dict(self) -> Dict[str, Any]: ...
    def to_json(self) -> str: ...
    def 保存配置(self, path: str = "缠论配置.json") -> None: ...
    def 对比(self, other: 缠论配置) -> Dict[str, Any]: ...
    def model_copy(self, update: Optional[Dict[str, Any]] = None) -> 缠论配置: ...
    @classmethod
    def 加载配置(cls, path: str = "缠论配置.json") -> 缠论配置: ...
    @classmethod
    def from_dict(cls, data: Dict[str, Any]) -> 缠论配置: ...
    @classmethod
    def from_json(cls, json_str: str) -> 缠论配置: ...
    @classmethod
    def 不推送(cls) -> 缠论配置: ...
    @classmethod
    def 按序号重组字典(cls, 默认配置: Any, 原始字典: Dict[str, Any]) -> Dict[str, Any]: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...
