import type { SuspensionPoint } from "../../evaluator/shared/suspension-analysis-types";
import { type Expr } from "../../expr";
export interface SuspensionSegment<P extends SuspensionPoint> {
    stateNumber: number;
    expressions: Expr[];
    suspensionPoint: P | null;
}
export declare function containsSuspensionExpr(expr: Expr, targetExpr: Expr, shouldSkipBody?: (_expr: Expr) => boolean): boolean;
export declare function findSuspensionInExpr<P extends SuspensionPoint>(expr: Expr, points: P[], shouldSkipBody?: (_expr: Expr) => boolean): number;
export interface SplitOptions {
    shouldSkipBody?: (expr: Expr) => boolean;
    handleReturnStatements?: boolean;
    handleSequentialSuspensions?: boolean;
}
export declare function splitBodyAtSuspensionPoints<P extends SuspensionPoint>(body: Expr, points: P[], options?: SplitOptions): SuspensionSegment<P>[];
