from collections.abc import Sequence
from typing import Any, TypeAlias

from django.db.models.sql.where import NothingNode

_NodeChildren: TypeAlias = list[Node | NothingNode | Sequence[Any]]

class Node:
    children: _NodeChildren
    default: str
    connector: str
    negated: bool
    def __init__(
        self, children: _NodeChildren | None = None, connector: str | None = None, negated: bool = False
    ) -> None: ...
    @classmethod
    def create(
        cls, children: _NodeChildren | None = None, connector: str | None = None, negated: bool = False
    ) -> Node: ...
    def copy(self) -> Node: ...
    def __copy__(self) -> Node: ...
    def __deepcopy__(self, memodict: dict[Any, Any]) -> Node: ...
    def __len__(self) -> int: ...
    def __bool__(self) -> bool: ...
    def __contains__(self, other: tuple[str, int]) -> bool: ...
    def __hash__(self) -> int: ...
    def add(self, data: Any, conn_type: str) -> Any: ...
    def negate(self) -> None: ...
