"""
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.core.autocommit import reader, writer
from graph_sitter.core.expressions.expression import Expression
from graph_sitter.core.interfaces.chainable import Chainable
from graph_sitter.core.interfaces.resolvable import Resolvable
from graph_sitter.writer_decorators import apidoc, noapidoc
from graph_sitter.core.interfaces.importable import Importable

if TYPE_CHECKING:
    ...
Object = TypeVar("Object", bound="Chainable")
Attribute = TypeVar("Attribute", bound="Resolvable")
Parent = TypeVar("Parent", bound="Expression")
@apidoc
class ChainedAttribute(Expression[Parent], Resolvable, Generic[Object, Attribute, Parent]):
    """An attribute of an object. (IE a method on a class, a function from a module, etc)

    Examples:
     A.method()
    """
    _object: Object
    _attribute: Attribute
    def __init__(self, ts_node, file_node_id, G, parent: Parent, object: TSNode, attribute: TSNode) -> None:
        ...
    
    @property
    @reader
    def full_name(self) -> str:
        """Returns the full name of the attribute, including the object expression.

        Gets the complete name representation of a chained attribute, which includes both the object and attribute parts (e.g., 'my_object.my_attribute').

        Returns:
            str: The full string representation of the chained attribute expression.
        """
        ...
    
    @property
    @reader
    def attribute(self) -> Attribute:
        """Gets the attribute being accessed in a chained attribute expression.

        This property returns the Attribute component of a chained attribute expression (e.g., in `object.attribute`, returns the `attribute` part).

        Args:
            None

        Returns:
            Attribute: The attribute component of the chained expression.
        """
        ...
    
    @property
    def object(self) -> Object:
        """Returns the object that contains the attribute being looked up.

        Provides access to the object part of a chained attribute expression (e.g., in 'A.method', returns the 'A' part).

        Returns:
            Object: The object component of the chained attribute expression. Guaranteed to be an instance of Chainable.
        """
        ...
    
    @property
    @noapidoc
    def descendant_symbols(self) -> list[Importable]:
        ...
    
    @noapidoc
    @writer
    def rename_if_matching(self, old: str, new: str): # -> None:
        ...
    


