import { type SemanticNamingProvider } from "./semanticNaming.js";
import { type CodeEmissionPlan, type EmissionInput } from "./emissionPlan.js";
/** A single proposed file in the reviewable code artifact. Path is artifact-relative, POSIX-style. */
export interface CodeFile {
    readonly path: string;
    readonly contents: string;
}
/** The reviewable output of a code-emission pass: the producing adapter plus its ordered files. */
export interface CodeArtifact {
    readonly adapterName: string;
    readonly files: readonly CodeFile[];
}
/**
 * The pluggable code-target seam. An adapter is a pure function from the target-neutral plan to a
 * concrete code artifact. `name` records which target produced an artifact. Additive: future targets
 * implement this interface without changing the emitter.
 */
export interface CodeTargetAdapter {
    readonly name: string;
    readonly emit: (plan: CodeEmissionPlan) => CodeArtifact;
}
/**
 * Emit reviewable code for a set of screens through the selected adapter. Builds the deterministic,
 * target-neutral plan, applies the optional semantic-naming port (which may rename elements but never
 * change structure), and renders through the adapter. With no naming provider the structural default
 * names are used, so emission is fully deterministic and model-independent. The result is a proposal,
 * not an applied change.
 */
export declare function emitCode(input: EmissionInput, adapter: CodeTargetAdapter, naming?: SemanticNamingProvider): CodeArtifact;
//# sourceMappingURL=codeTargetAdapter.d.ts.map