from typing import Iterator, List

import ioh.iohcpp.logger

class IntegerBase:
    def __init__(self, ids: List[int], iids: List[int], dims: List[int]) -> None: ...
    def attach_logger(self, logger: ioh.iohcpp.logger.Logger) -> None: ...
    def detach_logger(self) -> None: ...
    def reset(self) -> None: ...
    def __iter__(self) -> Iterator: ...
    def __len__(self) -> int: ...
    @property
    def dimensions(self) -> List[int]: ...
    @property
    def instances(self) -> List[int]: ...
    @property
    def name(self) -> str: ...
    @property
    def problem_ids(self) -> List[int]: ...

class RealBase:
    def __init__(self, ids: List[int], iids: List[int], dims: List[int]) -> None: ...
    def attach_logger(self, arg0: ioh.iohcpp.logger.Logger) -> None: ...
    def detach_logger(self) -> None: ...
    def reset(self) -> None: ...
    def __iter__(self) -> Iterator: ...
    def __len__(self) -> int: ...
    @property
    def dimensions(self) -> List[int]: ...
    @property
    def instances(self) -> List[int]: ...
    @property
    def name(self) -> str: ...
    @property
    def problem_ids(self) -> List[int]: ...


class Real(RealBase): ...
class BBOB(RealBase): ...
class SBOX(RealBase): ...
class RealStarDiscrepancy(RealBase): ...
class Integer(IntegerBase): ...
class PBO(IntegerBase): ...
class Submodular(IntegerBase): ...
class IntegerStarDiscrepancy(RealBase): ...