import enum
import nanobind
from . import eigen_geometry as eigen_geometry, schema as schema, value as value
from typing import Any, Callable, ClassVar, overload

CalcProbabilityDensity: nanobind.nb_func
FindResourceOrThrow: nanobind.nb_func
GetDrakePath: nanobind.nb_func
configure_logging: Callable
kDrakeAssertIsArmed: bool
pretty_class_name: Callable
temp_directory: nanobind.nb_func
trigger_an_assertion_failure: nanobind.nb_func
use_native_cpp_logging: Callable

class MemoryFile:
    Make: ClassVar[nanobind.nb_func] = ...
    _rewrite_yaml_dump_attr_name: ClassVar[nanobind.nb_func] = ...
    def __init__(self, contents: bytes | str = ..., extension: str = ..., filename_hint: str = ...) -> None: ...
    def contents(self) -> bytes: ...
    @overload
    def extension(self) -> str: ...
    @overload
    def extension(self, aspassedtotheconstructor) -> Any: ...
    def filename_hint(self) -> str: ...
    def sha256(self) -> Sha256: ...
    def __copy__(self) -> MemoryFile: ...
    def __deepcopy__(self, arg: dict) -> MemoryFile: ...
    def __setattr__(self, arg0: str, arg1: object) -> None: ...
    @property
    def __fields__(self): ...

class Parallelism:
    Max: ClassVar[nanobind.nb_func] = ...
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, parallelize: bool) -> None: ...
    @overload
    def __init__(self, num_threads: int) -> None: ...
    def num_threads(self) -> int: ...
    def __copy__(self) -> Parallelism: ...
    def __deepcopy__(self, arg: dict) -> Parallelism: ...

class RandomDistribution(enum.Enum):
    __new__: ClassVar[Callable] = ...
    _generate_next_value_: ClassVar[Callable] = ...
    _hashable_values_: ClassVar[list] = ...
    _member_map_: ClassVar[dict] = ...
    _member_names_: ClassVar[list] = ...
    _member_type_: ClassVar[type[object]] = ...
    _unhashable_values_: ClassVar[list] = ...
    _unhashable_values_map_: ClassVar[dict] = ...
    _use_args_: ClassVar[bool] = ...
    _value2member_map_: ClassVar[dict] = ...
    _value_repr_: ClassVar[None] = ...
    kExponential: ClassVar[RandomDistribution] = ...
    kGaussian: ClassVar[RandomDistribution] = ...
    kUniform: ClassVar[RandomDistribution] = ...
    __nb_enum__: ClassVar[PyCapsule] = ...

class RandomGenerator:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, seed: int) -> None: ...
    def __call__(self) -> int: ...

class Sha256:
    Checksum: ClassVar[nanobind.nb_func] = ...
    Parse: ClassVar[nanobind.nb_func] = ...
    def __init__(self) -> None: ...
    def to_string(self) -> str: ...
    def __copy__(self) -> Sha256: ...
    def __deepcopy__(self, arg: dict) -> Sha256: ...
    def __eq__(self, arg: Sha256) -> bool: ...
    def __lt__(self, arg: Sha256) -> bool: ...
    def __ne__(self, arg: Sha256) -> bool: ...

class ToleranceType(enum.Enum):
    __new__: ClassVar[Callable] = ...
    _generate_next_value_: ClassVar[Callable] = ...
    _hashable_values_: ClassVar[list] = ...
    _member_map_: ClassVar[dict] = ...
    _member_names_: ClassVar[list] = ...
    _member_type_: ClassVar[type[object]] = ...
    _unhashable_values_: ClassVar[list] = ...
    _unhashable_values_map_: ClassVar[dict] = ...
    _use_args_: ClassVar[bool] = ...
    _value2member_map_: ClassVar[dict] = ...
    _value_repr_: ClassVar[None] = ...
    kAbsolute: ClassVar[ToleranceType] = ...
    kRelative: ClassVar[ToleranceType] = ...
    __nb_enum__: ClassVar[PyCapsule] = ...

class _MangledName:
    UNICODE_COMMA: ClassVar[str] = ...
    UNICODE_LEFT_BRACKET: ClassVar[str] = ...
    UNICODE_PERIOD: ClassVar[str] = ...
    UNICODE_RIGHT_BRACKET: ClassVar[str] = ...
    demangle: ClassVar[Callable] = ...
    mangle: ClassVar[Callable] = ...
    module_getattr: ClassVar[Callable] = ...
