import type { Node } from '@babel/types'; import type { SourceRange } from '../seam/types'; /** Babel plugins enabling the TS + JSX superset the instrumenter also parses. */ export declare const BABEL_PLUGINS: readonly ["typescript", "jsx"]; /** * A Babel position is `{ line (1-based), column (0-based) }`; a node carries an * optional `loc`. We narrow to the slice the traversals read. */ interface BabelLocSlice { start: { line: number; column: number; }; end: { line: number; column: number; }; } /** A node with the structural fields the traversals inspect. */ export type AnyNode = Node & { loc?: BabelLocSlice | null; [key: string]: unknown; }; /** * Convert a 1-based Babel `loc` to a 0-based Stryker {@link SourceRange} by * subtracting 1 from each line (columns unchanged) — the inverse of the * map-builder's `+1` keying. Both `targeting.ts` and `range-align.ts` emit * Stryker ranges through this single conversion so they stay byte-aligned. */ export declare function toStrykerRange(loc: BabelLocSlice): SourceRange; /** True for an AST node object (has a string `type`). */ export declare function isNode(value: unknown): value is AnyNode; /** * Yield each direct child node (or node in a child array) of `node`. * @yields each direct child AST node, skipping non-node fields (loc/type/extra). */ export declare function childNodes(node: AnyNode): Generator; export {};