/**
 * compute-preflight — pure function that turns a candidate's code +
 * a `PackageSurfaceResolver` + the framework-level package-surface
 * manifest into a `SymbolPreflightReport`.
 *
 * Stage 1 of the W0198 two-stage grader: lifts "does symbol X export
 * from package Y" entirely out of LLM judgment. The LLM rubric runs
 * after this and is told the preflight's findings as ground truth.
 *
 * The function is pure (no I/O beyond the resolver's): it parses the
 * candidate's imports, asks the resolver about each in-scope package,
 * and emits one finding per imported binding.
 *
 * Per-binding decision tree:
 *
 *   1. Drop the binding if it isn't a `named` import. Default,
 *      namespace, and side-effect imports are intentionally not
 *      checked — the package surface only includes named exports
 *      (per the design's "named bindings only" rule), so default /
 *      namespace imports cannot be answered against it without
 *      false-deducting legitimate code.
 *
 *   2. Drop the binding if its `source` package is not in the
 *      framework-level manifest. Out-of-scope packages don't get
 *      findings — they are silently passed through to the LLM rubric.
 *
 *   3. Resolve the package surface. If the resolver throws a typed
 *      `PackageSurfaceResolverError`, every binding from that package
 *      becomes `unresolved` with the matching reason. **Never deduct.**
 *
 *   4. If the binding is in the surface, emit `exists` (no deduction).
 *
 *   5. Otherwise, emit `missing` (deterministic deduction).
 *
 * Deduction is `total = min(missing_count * perMissing, cap)`. The
 * scoring bridge (Phase 5) computes the per-dimension score from this
 * report; this function stays a pure data factory.
 */
import { type PackageSurfaceConfig, type PackageSurfaceResolver, type SymbolPreflightReport } from "../../_vendor/ailf-core/index.d.ts";
/** Default deduction config — `−20 per missing, capped at 60`. */
export declare const DEFAULT_DEDUCTION: {
    readonly perMissing: 20;
    readonly cap: 60;
};
export interface ComputePreflightInput {
    /** Raw candidate output. Typically the contents of a single TS/TSX/JS code block. */
    readonly code: string;
    /** Identity for this candidate, recorded in the report's `candidate` field. */
    readonly candidate: {
        readonly taskId: string;
        readonly testIndex: number;
    };
    /** Framework-level package-surface manifest (Phase 0 / `definePackageSurface`). */
    readonly packageSurface: PackageSurfaceConfig;
    /** Resolver used to fetch each in-scope package's surface (Phase 1). */
    readonly resolver: PackageSurfaceResolver;
    /**
     * Deduction config. Defaults to `DEFAULT_DEDUCTION`. Pass
     * `{ perMissing: 0, cap: 0 }` to compute findings without deduction
     * (e.g. for measurement-only runs).
     */
    readonly deduction?: {
        readonly perMissing?: number;
        readonly cap?: number;
    };
}
export declare function computePreflight(input: ComputePreflightInput): Promise<SymbolPreflightReport>;
