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

from functools import cached_property
from typing import Self, TYPE_CHECKING, override
from graph_sitter.core.autocommit import reader, writer
from graph_sitter.core.expressions import Expression
from graph_sitter.core.interfaces.editable import Editable
from graph_sitter.core.interfaces.unwrappable import Unwrappable
from graph_sitter.writer_decorators import ts_apidoc

if TYPE_CHECKING:
    ...
@ts_apidoc
class JSXExpression(Unwrappable["Function | JSXElement | JSXProp"]):
    """Abstract representation of TSX/JSX expression"""
    def __init__(self, *args, **kwargs) -> None:
        ...
    
    @cached_property
    @reader
    def statement(self) -> Editable[Self] | None:
        """Returns the editable component of this JSX expression.

        Retrieves the editable contained within this JSX expression by accessing the second child node. Returns None if the JSX expression doesn't
        contain an editable object.

        Returns:
            Editable[Self]: A Editable object representing the statement of this JSX expression. None if the object doesn't have an Editable object.
        """
        ...
    
    @writer
    def reduce_condition(self, bool_condition: bool, node: Editable) -> None:
        """Simplifies a JSX expression by reducing it based on a boolean condition.


        Args:
            bool_condition (bool): The boolean value to reduce the condition to.

        """
        ...
    
    @writer
    @override
    def unwrap(self, node: Expression | None = ...): # -> None:
        """Removes the brackets from a JSX expression.


        Returns:
            None
        """
        ...
    


