/**
 * Static lint for workflow scripts.
 *
 * Catches the single most common AI-authoring bug: calling `agent()`,
 * `parallel()`, or `pipeline()` without `await` and then using the returned
 * Promise as if it were a value. The runtime would throw a cryptic TypeError
 * like `results.map is not a function`; this lint converts it into an
 * actionable error before the script ever runs.
 *
 * Rules (per matching CallExpression):
 *   Allowed parents
 *     - AwaitExpression argument                  `await parallel(...)`
 *     - ReturnStatement argument                  `return agent(...)` (auto-unwraps)
 *     - ExpressionStatement                       fire-and-forget; pending agents drain
 *     - ArrowFunctionExpression expression body   `() => agent(...)` (thunk for parallel/pipeline)
 *   Anything else (VariableDeclarator init, MemberExpression object, template
 *   interpolation, binary/logical operand, call argument, property/array
 *   element, ...) is rejected with a teaching message.
 *
 * Out of scope (handled by the runtime):
 *   - `parallel([agent(...), agent(...)])` (promises instead of thunks) — caught
 *     by the runtime's TypeError ("expects an array of functions, not promises").
 *   - Promise-as-value bugs that survive lint (dynamic indirection, late await).
 */
import type { Node } from 'acorn';
type AnyNode = Node & {
    [key: string]: any;
    start: number;
    end: number;
    loc?: {
        start: {
            line: number;
            column: number;
        };
    };
};
export declare function lintAwaits(ast: AnyNode): void;
export {};
