import ts from 'typescript';
/**
 * Get a function declaration from a TS node by resolving its symbol.
 */
export declare function getFunctionDeclarationFromNode(checker: ts.TypeChecker, node: ts.Node): ts.FunctionLikeDeclarationBase | null;
/**
 * Get the first function declaration with a body from a symbol.
 */
export declare function getFunctionDeclarationFromSymbol(symbol?: ts.Symbol): ts.FunctionLikeDeclarationBase | null;
/**
 * Check if a node is a function-like declaration (function, arrow, function expression).
 */
export declare function isFunctionLikeDeclarationBase(node: ts.Node): node is ts.FunctionLikeDeclarationBase;
/**
 * Walk a subtree and collect all nodes matching a given SyntaxKind.
 */
export declare function extractNodesBySyntaxKind<TNode extends ts.Node>(node: ts.Node, kind: ts.SyntaxKind): TNode[];
/**
 * Walk a subtree and collect all nodes matching a predicate.
 */
export declare function extractNodes<TNode extends ts.Node>(node: ts.Node, predicate: (n: ts.Node) => boolean): TNode[];
/**
 * Check if a binary expression is an assignment (=, +=, -=, etc.).
 */
export declare function isAssignmentExpression(node: ts.Node): node is ts.BinaryExpression;
/**
 * Check if a SyntaxKind is an assignment operator.
 */
export declare function isAssignmentOperator(kind: ts.SyntaxKind): boolean;
/**
 * Check if a node introduces a new variable scope.
 */
export declare function doesNodeCreateNewScope(node: ts.Node): boolean;
//# sourceMappingURL=utils.d.ts.map