# Stubs for bisect

from typing import Any, Sequence, MutableSequence, TypeVar

_T = TypeVar('_T')

# TODO uncomment when mypy# 2035 is fixed
# def bisect_left(a: Sequence[_T], x: _T, lo: int = ..., hi: int = ...) -> int: ...
# def bisect_right(a: Sequence[_T], x: _T, lo: int = ..., hi: int = ...) -> int: ...
# def bisect(a: Sequence[_T], x: _T, lo: int = ..., hi: int = ...) -> int: ...
#
# def insort_left(a: MutableSequence[_T], x: _T, lo: int = ..., hi: int = ...) -> int: ...
# def insort_right(a: MutableSequence[_T], x: _T, lo: int = ..., hi: int = ...) -> int: ...
# def insort(a: MutableSequence[_T], x: _T, lo: int = ..., hi: int = ...) -> int: ...

def bisect_left(a: Sequence, x: Any, lo: int = ..., hi: int = ...) -> int: ...
def bisect_right(a: Sequence, x: Any, lo: int = ..., hi: int = ...) -> int: ...
def bisect(a: Sequence, x: Any, lo: int = ..., hi: int = ...) -> int: ...

def insort_left(a: MutableSequence, x: Any, lo: int = ..., hi: int = ...) -> int: ...
def insort_right(a: MutableSequence, x: Any, lo: int = ..., hi: int = ...) -> int: ...
def insort(a: MutableSequence, x: Any, lo: int = ..., hi: int = ...) -> int: ...
