/**
 * Skill synthesizer — converts analyzed traces into skill documents.
 * Two modes:
 *   1. Template-based (fast, zero deps) — extracts structure from trace analysis
 *   2. LLM-powered (richer) — sends trace summary to local LLM for natural language synthesis
 */
import type { AnalyzedTrace } from './trace-analyzer.js';
import type { SkillDocument } from './schema.js';
export interface SynthesisOptions {
    /** Synthesis mode */
    mode: 'template' | 'llm';
    /** Override the generated name */
    name?: string;
    /** Override the generated description */
    description?: string;
    /** Extra tags to add */
    extraTags?: string[];
    /** LLM endpoint (required for mode=llm) */
    llmEndpoint?: string;
    /** LLM model name (required for mode=llm) */
    llmModel?: string;
}
export interface SynthesisResult {
    skill: SkillDocument;
    /** Confidence in the synthesized skill (0-1) */
    confidence: number;
    /** Warnings/notes from synthesis */
    warnings: string[];
}
/**
 * Check if a trace is worth synthesizing into a skill.
 */
export declare function isWorthSynthesizing(trace: AnalyzedTrace): {
    worth: boolean;
    reason?: string;
};
/**
 * Synthesize a skill using template extraction (fast, zero dependencies).
 */
export declare function synthesizeTemplate(trace: AnalyzedTrace, options?: SynthesisOptions): SynthesisResult;
/**
 * Build a prompt for LLM-based skill synthesis.
 */
export declare function buildLlmPrompt(trace: AnalyzedTrace): string;
/**
 * Parse LLM response into a SkillDocument. Handles common LLM output quirks.
 */
export declare function parseLlmResponse(raw: string, trace: AnalyzedTrace): SynthesisResult;
/**
 * Full LLM-based synthesis. Sends trace to local endpoint, parses response.
 */
export declare function synthesizeLlm(trace: AnalyzedTrace, endpoint: string, model: string): Promise<SynthesisResult>;
/**
 * Synthesize a skill from a trace, using the specified mode.
 */
export declare function synthesize(trace: AnalyzedTrace, options: SynthesisOptions): Promise<SynthesisResult>;
