/**
 * Acceptance gate runner — executes typed `AcceptanceGate` items from a
 * task's `acceptance` array and returns structured `AcceptanceGateResult[]`.
 *
 * Supported gate kinds:
 *   - `test`    — spawn a command, assert exit code / stdout
 *   - `file`    — assert file properties (exists, bytes, content)
 *   - `command` — spawn any CLI, assert exit code / stdout / stderr
 *   - `lint`    — run biome/eslint/tsc/prettier/rustc/clippy, assert clean
 *   - `http`    — fetch URL, assert status + optional body
 *   - `manual`  — always returns `skipped` (requires explicit human verdict)
 *
 * Design constraints:
 *   - Each gate is self-contained (no cross-gate state).
 *   - Gates run sequentially unless the caller sets `parallel` options.
 *   - Default timeout is 60 000 ms per gate (overridable via `timeoutMs`
 *     on the gate or the `CLEO_GATE_TIMEOUT_MS` env variable).
 *
 * @epic T760
 * @task T781
 */
import type { AcceptanceGate, AcceptanceGateResult } from '@cleocode/contracts';
/** Options for `runGates`. */
export interface RunGatesOptions {
    /** Absolute project root; defaults to `getProjectRoot()`. */
    projectRoot?: string;
    /**
     * When `true`, manual gates are auto-skipped with a note.
     * When `false` (default), they return `result: 'skipped'` with a prompt notice.
     */
    skipManual?: boolean;
}
/**
 * Execute all typed `AcceptanceGate` entries and return results.
 *
 * Free-text strings in the acceptance array MUST be filtered by the caller
 * before invoking this function. Only `AcceptanceGate` objects are accepted.
 *
 * @param gates   - Typed gate objects (strings pre-filtered by caller).
 * @param options - Execution options.
 * @returns       Ordered `AcceptanceGateResult[]`, one per gate.
 *
 * @epic T760
 * @task T781
 */
export declare function runGates(gates: AcceptanceGate[], options?: RunGatesOptions): Promise<AcceptanceGateResult[]>;
/**
 * Filter a mixed acceptance array to only typed `AcceptanceGate` objects.
 * Free-text strings are silently dropped with their original index preserved
 * via the `index` field of each result.
 *
 * @param items  - Mixed `(string | AcceptanceGate)[]` from `task.acceptance`.
 * @returns      Typed gates with their original indices.
 */
export declare function extractTypedGates(items: (string | AcceptanceGate)[]): Array<{
    gate: AcceptanceGate;
    originalIndex: number;
}>;
//# sourceMappingURL=gate-runner.d.ts.map