"""
This type stub file was generated by pyright.
"""

from typing import Generic, TYPE_CHECKING, TypeVar
from tree_sitter import Node as TSNode
from graph_sitter.codebase.codebase_graph import CodebaseGraph
from graph_sitter.core.autocommit import reader
from graph_sitter.core.node_id_factory import NodeId
from graph_sitter.core.statements.if_block_statement import IfBlockStatement
from graph_sitter.writer_decorators import apidoc
from graph_sitter.python.detached_symbols.code_block import PyCodeBlock

if TYPE_CHECKING:
    ...
Parent = TypeVar("Parent", bound="PyCodeBlock")
@apidoc
class PyIfBlockStatement(IfBlockStatement[Parent, "PyIfBlockStatement"], Generic[Parent]):
    """Pythons implementation of the if/elif/else statement block.
    For example, if there is a code block like:
    if condition1:
        block1
    elif condition2:
        block2
    else:
        block3
    This class represents the entire block, including the conditions and nested code blocks.
    """
    statement_type = ...
    def __init__(self, ts_node: TSNode, file_node_id: NodeId, G: CodebaseGraph, parent: Parent, pos: int, main_if_block: PyIfBlockStatement | None = ...) -> None:
        ...
    
    @property
    @reader
    def is_if_statement(self) -> bool:
        """Check if the current block is an if statement.

        Returns:
            bool: True if the current block is an if statement, False otherwise.
        """
        ...
    
    @property
    @reader
    def is_else_statement(self) -> bool:
        """Determines if the current block is an else block.

        A property that checks if the current TreeSitter node represents an else clause in an if-elif-else statement chain.

        Returns:
            bool: True if the current block is an else block, False otherwise.
        """
        ...
    
    @property
    @reader
    def is_elif_statement(self) -> bool:
        """Determines if the current block is an 'elif' clause.

        Returns:
            bool: True if the current block is an 'elif' clause, False otherwise.
        """
        ...
    


