import { Effect } from "effect";
import { QuintError } from "./errors.js";
import type { RunGenerationOptions, TestGenerationOptions, TraceGenerationOptions } from "./run-options.js";
interface RunTraceGenerationPolicy {
    readonly mode: "run";
    readonly command: "quint run";
    readonly options: RunGenerationOptions;
    readonly buildCliArgs: (outDir: string) => Effect.Effect<ReadonlyArray<string>, QuintError>;
}
interface TestTraceGenerationPolicy {
    readonly mode: "test";
    readonly command: "quint test";
    readonly options: TestGenerationOptions;
    readonly buildCliArgs: (outDir: string) => Effect.Effect<ReadonlyArray<string>, QuintError>;
}
type TraceGenerationPolicy = RunTraceGenerationPolicy | TestTraceGenerationPolicy;
type CompiledRunOptions = RunGenerationOptions & {
    readonly compiledInput: string;
};
type CompiledEvaluatorPolicy = RunTraceGenerationPolicy & {
    readonly options: CompiledRunOptions;
};
export declare const validateTraceGenerationConfiguration: (opts: TraceGenerationOptions) => Effect.Effect<void, QuintError>;
/** Backwards-compatible synchronous argument builder. Invalid environment config throws immediately. */
export declare const buildRunArgs: (opts: RunGenerationOptions, outDir: string) => ReadonlyArray<string>;
/** Backwards-compatible synchronous argument builder. Invalid environment config throws immediately. */
export declare const buildTestArgs: (opts: TestGenerationOptions, outDir: string) => ReadonlyArray<string>;
export declare const resolveTraceGenerationPolicy: (opts: TraceGenerationOptions) => TraceGenerationPolicy;
export declare const isCompiledEvaluatorPolicy: (policy: TraceGenerationPolicy) => policy is CompiledEvaluatorPolicy;
export {};
//# sourceMappingURL=trace-generation-policy.d.ts.map