"""Type stubs for the MERIDIAN bindings (ADR-185 P2). Present only when the wheel is built with the ``[meridian]`` extra. """ from __future__ import annotations import enum class HardwareType(enum.Enum): Esp32S3 = 0 Intel5300 = 1 Atheros = 2 Generic = 3 @staticmethod def detect(subcarrier_count: int) -> HardwareType: ... @property def subcarrier_count(self) -> int: ... @property def mimo_streams(self) -> int: ... def __repr__(self) -> str: ... class CanonicalCsiFrame: @property def amplitude(self) -> list[float]: ... @property def phase(self) -> list[float]: ... @property def hardware_type(self) -> HardwareType: ... def __repr__(self) -> str: ... class HardwareNormalizer: def __init__(self, canonical_subcarriers: int = ...) -> None: ... @staticmethod def detect_hardware(subcarrier_count: int) -> HardwareType: ... @property def canonical_subcarriers(self) -> int: ... def normalize( self, amplitude: list[float], phase: list[float], hardware: HardwareType ) -> CanonicalCsiFrame: ... def __repr__(self) -> str: ... class MeridianGeometryConfig: def __init__( self, n_frequencies: int = ..., scale: float = ..., geometry_dim: int = ..., seed: int = ..., ) -> None: ... @property def n_frequencies(self) -> int: ... @property def scale(self) -> float: ... @property def geometry_dim(self) -> int: ... @property def seed(self) -> int: ... def __repr__(self) -> str: ... class GeometryEncoder: def __init__(self, config: MeridianGeometryConfig | None = ...) -> None: ... def encode(self, ap_positions: list[list[float]]) -> list[float]: ... @property def geometry_dim(self) -> int: ... def __repr__(self) -> str: ... class AdaptationResult: @property def lora_weights(self) -> list[float]: ... @property def final_loss(self) -> float: ... @property def frames_used(self) -> int: ... @property def adaptation_epochs(self) -> int: ... def __repr__(self) -> str: ... class RapidAdaptation: def __init__( self, min_calibration_frames: int, lora_rank: int, loss_kind: str = ..., epochs: int = ..., lr: float = ..., lambda_ent: float = ..., ) -> None: ... def push_frame(self, frame: list[float]) -> None: ... def is_ready(self) -> bool: ... @property def buffer_len(self) -> int: ... def adapt(self) -> AdaptationResult: ... def __repr__(self) -> str: ... class CrossDomainEvaluator: def __init__(self, n_joints: int) -> None: ... def evaluate( self, predictions: list[tuple[list[float], list[float]]], domain_labels: list[int], ) -> dict[str, float]: ... def __repr__(self) -> str: ... def mpjpe(pred: list[float], gt: list[float], n_joints: int) -> float: ...