import pymonad.monad # type: ignore from _typeshed import Incomplete from typing import Any, Callable, Generic, TypeVar S = TypeVar('S') T = TypeVar('T') class Maybe(pymonad.monad.Monad, Generic[T]): @classmethod def insert(cls, value: T) -> Maybe[T]: ... def amap(self, monad_value: Maybe[S]) -> Maybe[T]: ... def bind(self, kleisli_function: Callable[[S], Maybe[T]]) -> Maybe[T]: ... def is_just(self) -> bool: ... def is_nothing(self) -> bool: ... def map(self, function: Callable[[S], T]) -> Maybe[T]: ... def maybe(self, default_value: T, extraction_function: Callable[[S], T]) -> T: ... option: Incomplete def __eq__(self, other): ... def Just(value: T) -> Maybe[T]: ... Nothing: Maybe[Any] class Option(Maybe[T]): ... def Some(value: T) -> Option[T]: ...