from __future__ import annotations

from typing import Any

class Skpath: ...
AnyPath = Any

def autopath(*args: Any, **kwargs: Any) -> Any: ...

class PathDetectionError(Exception): ...
class NotAFileError(IsADirectoryError): ...

class CustomRoot: ...
def set_custom_root(path: Any) -> None: ...
def get_custom_root() -> Any: ...
def clear_custom_root() -> None: ...
def get_project_root() -> Any: ...

def get_caller_path(*args: Any, **kwargs: Any) -> Any: ...
def get_current_dir() -> Any: ...
def get_cwd() -> Any: ...
def get_module_path(*args: Any, **kwargs: Any) -> Any: ...
def get_id(*args: Any, **kwargs: Any) -> Any: ...

def get_project_paths(*args: Any, **kwargs: Any) -> Any: ...
def get_project_structure(*args: Any, **kwargs: Any) -> Any: ...
def get_formatted_project_tree(*args: Any, **kwargs: Any) -> Any: ...

def is_valid_filename(*args: Any, **kwargs: Any) -> bool: ...
def streamline_path(
    path: str,
    *,
    max_len: int | None = ...,
    replacement_char: str = ...,
    lowercase: bool = ...,
    strip_whitespace: bool = ...,
    chars_to_replace: str | list[str] | None = ...,
    allow_unicode: bool = ...,
) -> str: ...
def streamline_path_quick(
    path: str,
    max_len: int | None = ...,
    replacement_char: str = ...,
    lowercase: bool = ...,
) -> str: ...

__all__: list[str]
