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

from typing import TYPE_CHECKING
from tree_sitter import Node as TSNode
from graph_sitter.codebase.codebase_graph import CodebaseGraph
from graph_sitter.core.node_id_factory import NodeId
from graph_sitter.core.statements.assignment_statement import AssignmentStatement
from graph_sitter.extensions.autocommit import reader
from graph_sitter.typescript.assignment import TSAssignment
from graph_sitter.writer_decorators import noapidoc, ts_apidoc
from graph_sitter.typescript.detached_symbols.code_block import TSCodeBlock

if TYPE_CHECKING:
    ...
logger = ...
@ts_apidoc
class TSAssignmentStatement(AssignmentStatement["TSCodeBlock", TSAssignment]):
    """A class that represents a TypeScript assignment statement in a codebase, such as `const x = 1` or `const { a: b } = myFunc()`.

    This includes potentially multiple Assignments via `statement.assignments`, which represent each assignment of a value to a variable within this statement.

    For example, assigning to a destructured object, or assigning multiple values to multiple variables in a single statement.
    """
    assignment_types = ...
    @classmethod
    @reader
    @noapidoc
    def from_assignment(cls, ts_node: TSNode, file_node_id: NodeId, G: CodebaseGraph, parent: TSCodeBlock, pos: int, assignment_node: TSNode) -> TSAssignmentStatement:
        """Creates an assignment statement node from a TreeSitter assignment node.

        This class method constructs a TSAssignmentStatement from a TreeSitter node representing an assignment. The method validates that the assignment node type is
        one of the supported types: assignment_expression, augmented_assignment_expression, variable_declarator, public_field_definition, or property_signature.

        Args:
            ts_node (TSNode): The TreeSitter node representing the entire statement.
            file_node_id (NodeId): The identifier for the file containing this node.
            G (CodebaseGraph): The codebase graph being constructed.
            parent (TSHasBlock): The parent block containing this statement.
            code_block (TSCodeBlock): The code block containing this statement.
            pos (int): The position of this statement within its code block.
            assignment_node (TSNode): The TreeSitter node representing the assignment.

        Returns:
            TSAssignmentStatement: A new assignment statement node.

        Raises:
            ValueError: If the assignment_node.type is not one of the supported assignment types.
        """
        ...
    


