import { type TSESTree } from "@typescript-eslint/types";
import { type TSESLint } from "@typescript-eslint/utils";
export interface ChildNode {
    value: TSESTree.Node;
    metadata?: {
        parent: ChildNode;
        key: string;
        index?: number;
    };
}
export type ChildNodeMetadata = ChildNode["metadata"];
export type VisitorKeys = TSESLint.SourceCode["visitorKeys"];
export declare function iterateChildren(node: TSESTree.Node, visitorKeys: VisitorKeys, parent: ChildNode): ChildNode[];
export declare function iterateDescendants(node: TSESTree.Node, visitorKeys: VisitorKeys, maxDepth?: number): Generator<ChildNode, void, any>;
export declare function getFirstParentOfType(node: TSESTree.Node, astType: string): TSESTree.Node;
export declare function hasFunctionAncestor(metadata: ChildNodeMetadata, rootNode: TSESTree.Node): boolean;
export declare function getEnclosingFunctionFromNode(node: TSESTree.Node): any;
