import type { DesignTokens, InteractionHint, ScreenIr } from "./irTypes.js";
import type { RoutingHint } from "./navGraph.js";
/** The target-neutral role of an element — mirrors the IR `interactionHint`; no framework tag. */
export type EmissionRole = InteractionHint;
/** A target-neutral element in a screen's emission tree. `displayName` is a structural default. */
export interface EmissionElement {
    readonly id: string;
    readonly role: EmissionRole;
    /** Semantic display name — a structural default here; the naming port may override it (never structure). */
    readonly displayName: string;
    readonly text?: string;
    readonly children: readonly EmissionElement[];
}
/** A resolved outgoing navigation target for a screen, derived from the routing hints (#811). */
export interface EmissionNavTarget {
    readonly trigger: string;
    readonly toScreenId: string;
    readonly toScreenName: string;
}
/** One screen reduced to its emission tree plus its outgoing navigation targets. */
export interface ScreenEmission {
    readonly screenId: string;
    readonly screenName: string;
    readonly root: EmissionElement;
    readonly navTargets: readonly EmissionNavTarget[];
}
/** The full target-neutral emission plan an adapter renders to a concrete code target. */
export interface CodeEmissionPlan {
    readonly screens: readonly ScreenEmission[];
    readonly tokens: DesignTokens;
}
/** The inputs to a code-emission pass: the screens, their tokens, and their routing hints. */
export interface EmissionInput {
    readonly screens: readonly ScreenIr[];
    readonly tokens: DesignTokens;
    readonly hints: readonly RoutingHint[];
}
/**
 * Build the target-neutral emission plan from the Screen-IR, design tokens, and routing hints. Pure,
 * deterministic, model-free: preserves the IR's child order, carries the tokens through verbatim, and
 * attaches each screen's resolved outgoing navigation targets. The same input yields a byte-identical
 * plan, so the emitted code is reproducible.
 */
export declare function buildEmissionPlan(input: EmissionInput): CodeEmissionPlan;
//# sourceMappingURL=emissionPlan.d.ts.map