/**
 * T-FC2-FLOW-TEMPLATES — `flows:` → FSM-fragment expansion (B2: the FLOW half of
 * the reusable-template thesis; the gate half is `guards:`/`guards_compiler`).
 *
 * A flow is a `{template, params}` invocation that a pure expander turns into an
 * FSM `{states, transitions}` fragment, merged into the hand-authored `fsm.yaml`
 * machine BEFORE `validateFsm` so totality is checked on the EXPANDED FSM. Mirrors
 * `guards_compiler`'s contract: a FLAT template registry, fail-LOUD on an unknown
 * template or invalid params (no silent skip).
 *
 * First template: `loopback_gate` — a quality-gate re-do edge (e.g. the guess-audit
 * loop `researched --guess_found--> researching`). FSM-only (no skills); the
 * block-while-state pattern is already covered by `guards:`.
 *
 * Pure: no I/O. Imported by: `loader.ts` (at the fsm-load site).
 */
import type { Transition } from '../runtime/fsm.js';
import type { Flow } from './schemas/manifest.js';
export interface FlowExpansion {
    states: string[];
    transitions: Transition[];
}
export type CompileFlowsResult = {
    ok: true;
    expansion: FlowExpansion;
} | {
    ok: false;
    errors: string[];
};
/**
 * Compile a pack's `flows` into one merged `{states, transitions}` fragment.
 * Empty `flows` → an empty (no-op) expansion. An unknown template or invalid
 * params is collected (prefixed with the pack name) and surfaced as
 * `{ok:false, errors}` — never silently dropped (mirrors `compileGuards`).
 */
export declare function compileFlows(packName: string, flows: readonly Flow[]): CompileFlowsResult;
//# sourceMappingURL=flows_compiler.d.ts.map