import { type PhasePlan } from "./journal-phase-detector.js";
import { selectProvider } from "./journal-llm-client.js";
export interface JournalRunOptions {
    cwd: string;
    outputDir: string;
    dryRun?: boolean;
    force?: boolean;
    bulkFill?: boolean;
    checkpointPath?: string;
    lockPath?: string;
    /** gitLog filter — git-relative string like "2 weeks ago" or ISO date. */
    since?: string;
    /** Regenerate only this entry date (YYYY-MM-DD); mutually exclusive with phase. */
    entry?: string;
    /** Regenerate only this phase slug; mutually exclusive with entry. */
    phase?: string;
}
export interface JournalRunResult {
    status: "ok" | "planned" | "locked" | "aborted" | "capped" | "skipped";
    phases: Array<{
        slug: string;
        file: string;
        costUsd: number;
    }>;
    reason?: string;
}
export interface ProcessContext {
    provider: ReturnType<typeof selectProvider>;
    outputDir: string;
    force: boolean;
}
export interface PhaseWriteResult {
    slug: string;
    content: string;
    hash: string;
    costUsd: number;
}
/** Seam: per-phase LLM + validation (no fs). Exported for tests. */
export declare function processPhase(phase: PhasePlan, ctx: ProcessContext): Promise<PhaseWriteResult>;
export declare function runJournalInit(opts: JournalRunOptions): Promise<JournalRunResult>;
export declare function runJournalAppend(opts: JournalRunOptions): Promise<JournalRunResult>;
export declare function runJournalRegenerate(opts: JournalRunOptions): Promise<JournalRunResult>;
/** Rewrite overview.md / index.md journal section from the current phase files
 *  on disk — no LLM, no credentials needed. Preserves the
 *  `<!-- manual:begin migrated-overview -->` block in overview.md verbatim,
 *  regenerates the Phases list below it from the files in phases/. */
export declare function refreshOverviewAndRollup(opts: JournalRunOptions): Promise<JournalRunResult>;
//# sourceMappingURL=journal-generator.d.ts.map