from typing import Any, Collection, Dict, Optional, List, Type, Tuple
import docutils.nodes
from docutils.parsers.rst import Directive


def directive(directive_name: str, language_module: object, document: docutils.nodes.document) -> Tuple[Optional[Type[Any]], List[object]]: ...

def choice(argument: str, values: Collection[object]) -> object: ...
def nonnegative_int(argument: str) -> int: ...
def uri(argument: str) -> str: ...
def flag(argument: str) -> None: ...
def length_or_percentage_or_unitless(argument: str) -> str: ...

def register_directive(name: str, directive: Type[Directive]) -> None: ...

_directive_registry: Dict[str, Tuple[str, str]] = ...
