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

from typing import TypeVar
from tree_sitter import Node as TSNode
from graph_sitter.codebase.codebase_graph import CodebaseGraph
from graph_sitter.core.autocommit import commiter, reader
from graph_sitter.core.detached_symbols.code_block import CodeBlock
from graph_sitter.core.interface import Interface
from graph_sitter.core.node_id_factory import NodeId
from graph_sitter.core.statements.statement import Statement
from graph_sitter.typescript.detached_symbols.code_block import TSCodeBlock
from graph_sitter.typescript.expressions.type import TSType
from graph_sitter.typescript.function import TSFunction
from graph_sitter.typescript.interfaces.has_block import TSHasBlock
from graph_sitter.typescript.statements.attribute import TSAttribute
from graph_sitter.typescript.symbol import TSSymbol
from graph_sitter.writer_decorators import noapidoc, ts_apidoc

Parent = TypeVar("Parent", bound="TSHasBlock")
@ts_apidoc
class TSInterface(Interface[TSCodeBlock, TSAttribute, TSFunction, TSType], TSSymbol, TSHasBlock):
    """Representation of an Interface in TypeScript

    Attributes:
        parent_interfaces: All the interfaces that this interface extends.
        code_block: The code block that contains the interface's body.
    """
    def __init__(self, ts_node: TSNode, file_id: NodeId, G: CodebaseGraph, parent: Statement[CodeBlock[Parent, ...]]) -> None:
        ...
    
    @commiter
    @noapidoc
    def parse(self, G: CodebaseGraph) -> None:
        ...
    
    @property
    @reader
    def attributes(self) -> list[TSAttribute]:
        """Retrieves the list of attributes defined in the TypeScript interface.

        Args:
            None

        Returns:
            list[TSAttribute]: A list of the interface's attributes stored in the code block.
        """
        ...
    


