/**
 * Signal Collector — detects recurring patterns from living docs using LLM analysis.
 *
 * Runs on every increment closure (wired into LifecycleHookDispatcher.onIncrementDone).
 * Reads markdown files from .specweave/docs/internal/, sends them to the LLM for
 * pattern extraction, and persists results to .specweave/state/skill-signals.json.
 *
 * Error-isolated: never throws, never blocks increment closure.
 *
 * @module core/skill-gen/signal-collector
 */
interface CollectorOptions {
    maxSignals?: number;
    minSignalCount?: number;
}
export declare class SignalCollector {
    private projectRoot;
    private maxSignals;
    private minSignalCount;
    private ruleCollector;
    constructor(projectRoot: string, options?: CollectorOptions);
    /**
     * Collect signals from living docs for the given increment.
     * Never throws — all errors are caught and logged.
     */
    collect(incrementId: string): Promise<void>;
    /**
     * Seed mode: scan all living docs and populate the signal store
     * without associating patterns with any increment.
     */
    collectSeed(): Promise<void>;
    /**
     * Detect patterns via LLM analysis of markdown files.
     * Handles batching when total tokens exceed TOKEN_BUDGET.
     */
    private detectPatternsLLM;
    /**
     * Build the user prompt with <documents> block and optional <existing-rules> dedup context.
     */
    private buildPrompt;
    /**
     * Create or update a signal entry.
     */
    private upsertSignal;
    /**
     * Prune lowest-confidence signals when store exceeds maxSignals.
     */
    private pruneIfNeeded;
    private getSignalsPath;
}
export {};
//# sourceMappingURL=signal-collector.d.ts.map