import type { Artifact } from "../types/index.js";
export interface ArtifactGenerationResponse {
    success: boolean;
    sessionId: string;
    currentPhase?: string;
    status: string;
    message: string;
    recommendations: string[];
    artifacts: Artifact[];
    data?: Record<string, unknown>;
}
declare class ArtifactGenerationServiceImpl {
    generateArtifacts(sessionId: string, artifactTypes: ("adr" | "specification" | "roadmap" | "speckit")[]): Promise<ArtifactGenerationResponse>;
    generateConstraintDocumentation(sessionId: string): Promise<ArtifactGenerationResponse>;
    /**
     * Generate Spec-Kit artifacts from a design session state.
     *
     * Converts the session state to SessionState format and uses PolyglotGateway
     * with SpecKitStrategy to generate spec.md, plan.md, tasks.md, and progress.md.
     *
     * @param sessionState - The design session state
     * @returns Array of Spec-Kit artifacts
     * @private
     */
    private generateSpecKitArtifacts;
    /**
     * Convert DesignSessionState to SessionState for PolyglotGateway.
     *
     * Maps the design assistant's session state format to the domain's SessionState
     * format expected by the SpecKitStrategy.
     *
     * @param session - The design session state
     * @returns SessionState for gateway rendering
     * @private
     */
    private convertSessionToDomainResult;
    /**
     * Map gateway OutputDocument format to design assistant OutputFormat.
     *
     * The gateway supports an additional "shell" format that is not part of the
     * design assistant's OutputFormat union. Rather than implicitly coercing
     * "shell" to "markdown" (which can be semantically misleading), this method
     * treats "shell" as an unsupported format and raises a validation error.
     *
     * Callers should ensure that the gateway is requested to produce one of the
     * supported formats ("markdown", "yaml", or "json") for design artifacts.
     *
     * @param format - Gateway output format
     * @returns Design assistant OutputFormat
     * @throws ValidationError if an unsupported format (e.g., "shell") is provided
     * @private
     */
    private mapGatewayFormatToOutputFormat;
}
export declare const artifactGenerationService: ArtifactGenerationServiceImpl;
export declare const IMPLEMENTATION_STATUS: "IMPLEMENTED";
export {};
//# sourceMappingURL=artifact-generation.service.d.ts.map