from typing import Any, ClassVar

CENTROID: ClusterMethod
CLINK: ClusterMethod
GOWER: ClusterMethod
MCQUITTY: ClusterMethod
SLINK: ClusterMethod
UPGMA: ClusterMethod
WARD: ClusterMethod

class ClusterMethod:
    CENTROID: ClassVar[ClusterMethod] = ...
    CLINK: ClassVar[ClusterMethod] = ...
    GOWER: ClassVar[ClusterMethod] = ...
    MCQUITTY: ClassVar[ClusterMethod] = ...
    SLINK: ClassVar[ClusterMethod] = ...
    UPGMA: ClassVar[ClusterMethod] = ...
    WARD: ClassVar[ClusterMethod] = ...
    names: ClassVar[dict] = ...
    values: ClassVar[dict] = ...
    __slots__: ClassVar[tuple] = ...

class HierarchicalClusterPicker:
    __instance_size__: ClassVar[int] = ...
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def Cluster(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def Pick(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

class LeaderPicker:
    __instance_size__: ClassVar[int] = ...
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def LazyBitVectorPick(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def LazyPick(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...

class MaxMinPicker:
    __instance_size__: ClassVar[int] = ...
    @classmethod
    def __init__(cls, *args, **kwargs) -> None: ...
    @classmethod
    def LazyBitVectorPick(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def LazyBitVectorPickWithThreshold(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def LazyPick(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def LazyPickWithThreshold(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def Pick(cls, *args, **kwargs) -> Any: ...
    @classmethod
    def __reduce__(cls) -> Any: ...
