from typing import Any, ClassVar, List, Optional

import ioh.iohcpp

class AbstractWModel(Integer):
    def __init__(self, problem_id: int, instance: int, n_variables: int, name: str, dummy_select_rate: float = ..., epistasis_block_size: int = ..., neutrality_mu: int = ..., ruggedness_gamma: int = ...) -> None: ...
    def wmodel_evaluate(self, arg0: List[int]) -> int: ...

class AttractiveSector(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class BBOB(Real):
    def __init__(self, *args, **kwargs) -> None: ...

class BentCigar(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class BuecheRastrigin(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class ConcatenatedTrap(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class DifferentPowers(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class Discus(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class Ellipsoid(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class EllipsoidRotated(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class Gallagher101(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class Gallagher21(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class GriewankRosenBrock(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class Integer:
    problems: ClassVar[Any] = ...  # read-only
    def __init__(self, *args, **kwargs) -> None: ...
    def attach_logger(self, *args, **kwargs) -> Any: ...
    def create(self, *args, **kwargs) -> Any: ...
    def detach_logger(self, *args, **kwargs) -> Any: ...
    def reset(self, *args, **kwargs) -> Any: ...
    def __call__(self, *args, **kwargs) -> Any: ...
    @property
    def constraint(self) -> Any: ...
    @property
    def log_info(self) -> Any: ...
    @property
    def meta_data(self) -> Any: ...
    @property
    def objective(self) -> Any: ...
    @property
    def state(self) -> Any: ...

class IntegerWrappedProblem(Integer):
    def __init__(self, *args, **kwargs) -> None: ...

class IsingRing(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class IsingTorus(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class IsingTriangular(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class Katsuura(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class LABS(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class LeadingOnes(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class LeadingOnesDummy1(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class LeadingOnesDummy2(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class LeadingOnesEpistasis(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class LeadingOnesNeutrality(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class LeadingOnesRuggedness1(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class LeadingOnesRuggedness2(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class LeadingOnesRuggedness3(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class Linear(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class LinearSlope(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class LunacekBiRastrigin(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class MIS(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class NQueens(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class OneMax(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class OneMaxDummy1(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class OneMaxDummy2(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class OneMaxEpistasis(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class OneMaxNeutrality(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class OneMaxRuggedness1(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class OneMaxRuggedness2(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class OneMaxRuggedness3(Integer):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class PBO(Integer):
    def __init__(self, *args, **kwargs) -> None: ...

class Rastrigin(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class RastriginRotated(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class Real:
    problems: ClassVar[Any] = ...  # read-only
    def __init__(self, *args, **kwargs) -> None: ...
    def attach_logger(self, *args, **kwargs) -> Any: ...
    def create(self, *args, **kwargs) -> Any: ...
    def detach_logger(self, *args, **kwargs) -> Any: ...
    def reset(self, *args, **kwargs) -> Any: ...
    def __call__(self, *args, **kwargs) -> Any: ...
    @property
    def constraint(self) -> Any: ...
    @property
    def log_info(self) -> Any: ...
    @property
    def meta_data(self) -> Any: ...
    @property
    def objective(self) -> Any: ...
    @property
    def state(self) -> Any: ...

class RealWrappedProblem(Real):
    def __init__(self, *args, **kwargs) -> None: ...

class Rosenbrock(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class RosenbrockRotated(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class Schaffers10(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class Schaffers1000(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class Schwefel(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class SharpRidge(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class Sphere(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class StepEllipsoid(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

class WModelLeadingOnes(AbstractWModel):
    def __init__(self, instance: int, n_variables: int, dummy_select_rate: float = ..., epistasis_block_size: int = ..., neutrality_mu: int = ..., ruggedness_gamma: int = ...) -> None: ...

class WModelOneMax(AbstractWModel):
    def __init__(self, instance: int, n_variables: int, dummy_select_rate: float = ..., epistasis_block_size: int = ..., neutrality_mu: int = ..., ruggedness_gamma: int = ...) -> None: ...

class Weierstrass(Real):
    def __init__(self, arg0: int, arg1: int) -> None: ...

def wrap_integer_problem(f: handle, name: str, optimization_type: ioh.iohcpp.OptimizationType = ..., lb: Optional[float] = ..., ub: Optional[float] = ..., transform_variables: Optional[handle] = ..., transform_objectives: Optional[handle] = ..., calculate_objective: Optional[handle] = ...) -> None: ...
def wrap_real_problem(f: handle, name: str, optimization_type: ioh.iohcpp.OptimizationType = ..., lb: Optional[float] = ..., ub: Optional[float] = ..., transform_variables: Optional[handle] = ..., transform_objectives: Optional[handle] = ..., calculate_objective: Optional[handle] = ...) -> None: ...
