/**
 * Phase 3 Pipeline -- Stage 4: Domain Code Generator
 *
 * Generates domain core code (aggregates, entities, value objects, events,
 * commands, queries, seam interfaces) for each bounded context defined in
 * the Phase 2 DDD domain model.
 *
 * All external dependencies are represented as seam interfaces/traits --
 * no database layer, HTTP server, ERP, deployment, or infrastructure code
 * is generated. Aggregate constructors enforce invariants. Value objects
 * are immutable with factory creation.
 *
 * Exports:
 *   - buildDomainCode(domainModel, tddPlan, language) -- pure builder (no I/O)
 *   - generateDomainCode(context) -- async pipeline entry point
 *
 * Error codes:
 *   ECLI-P3-030  Missing prerequisite stage output (scaffold-generation)
 *   ECLI-P3-031  Domain codegen file write failure
 */
import type { Phase3Context, Phase3StageOutput, ImplementationLanguage, CodegenOutput } from '../types.js';
import type { Phase2DomainModel, TDDPlan, Phase2SPARCOutput } from '../../phase2/types.js';
/**
 * Pure function that builds all domain code files from the DDD domain model,
 * TDD plan, and SPARC pseudocode/architecture. No side effects -- does not
 * write anything to disk.
 *
 * @param domainModel - The Phase 2 DDD domain model
 * @param tddPlan     - The Phase 2 TDD plan (for seam/mock contract info)
 * @param language    - The resolved implementation language
 * @param sparc       - The Phase 2 SPARC output (pseudocode modules + architecture)
 * @returns CodegenOutput with all generated files and summary counts
 */
export declare function buildDomainCode(domainModel: Phase2DomainModel, tddPlan: TDDPlan, language: ImplementationLanguage, sparc: Phase2SPARCOutput): CodegenOutput;
/**
 * Stage 4 entry point: generate domain core code from the Phase 2 DDD domain
 * model, TDD plan, and resolved language stored on the pipeline context.
 *
 * Reads ScaffoldMetadata from context.stageOutputs.get('scaffold-generation')
 * and LanguageResolution from context.stageOutputs.get('language-resolution'),
 * calls buildDomainCode, writes all files to disk, and returns the stage output.
 *
 * @param context - The Phase 3 pipeline context
 * @returns Stage output describing success or failure
 */
export declare function generateDomainCode(context: Phase3Context): Promise<Phase3StageOutput>;
//# sourceMappingURL=domain-codegen.d.ts.map