from _typeshed import Incomplete
from tarandm_analytics_utils.predictive_models.attribute_preprocessing.attribute_binning import AttributeBinning as AttributeBinning, AttributeBinningType as AttributeBinningType, AttributeDataType as AttributeDataType, PredictiveModelBinName as PredictiveModelBinName
from tarandm_analytics_utils.predictive_models.attribute_preprocessing.attribute_transformation import AttributeTransformation as AttributeTransformation, AttributeTransformationType as AttributeTransformationType
from tarandm_analytics_utils.utils.base_model import BaseModel as BaseModel
from typing import Any

logger: Incomplete

class PredictiveModelDummyEncodingSingleValue(BaseModel):
    value: str | int | float
    encoded_feature_name: str
    use_for_undefined: bool

class PredictiveModelDummyEncoding(BaseModel):
    attribute: str
    encoding: list[PredictiveModelDummyEncodingSingleValue]
    def check_created_attribute_naming(self) -> PredictiveModelDummyEncoding: ...

class AttributePreprocessing(BaseModel):
    transformations: list[AttributeTransformation]
    binning: list[AttributeBinning]
    dummy_encoding: list[PredictiveModelDummyEncoding]
    def get_transformation_formula(self, attribute: str) -> str: ...
    def add_attribute_transformation(self, transformations: list[dict[str, str]]) -> None: ...
    @classmethod
    def add_attribute_binning(cls, attributes_binning: dict[str, Any]) -> list[AttributeBinning]: ...
    def get_attribute_binning(self, attribute: str) -> AttributeBinning | None: ...
    def apply_attribute_binning(self, attribute: str, attribute_value: str | int | float) -> float | None: ...
    def apply_attribute_binning_batch(self, attribute: str, attribute_values: list) -> list[float] | None: ...
    def attribute_binning_exists(self, attribute: str) -> bool: ...
    def get_all_transformation_attributes(self) -> list[str]: ...
    def get_attributes_created_in_transformations(self) -> list[str]: ...
    def get_all_binning_attributes(self) -> list[str]: ...
    def get_attributes_created_in_binning(self) -> list[str]: ...
    def get_all_dummy_enc_attributes(self) -> list[str]: ...
    def apply_dummy_encoding(self, attribute: str, attribute_value: str | int | float) -> dict[str, int] | None: ...

class AttributePreprocessingType:
    binning: list[AttributeBinningType]
    transformations: list[AttributeTransformationType]
