export type DreamGoalKind = 'dream' | 'goal';
export interface DreamGoalEntry {
    kind: DreamGoalKind;
    value: string;
    updatedAt: string;
}
export interface DreamGoalState {
    dream?: DreamGoalEntry;
    goal?: DreamGoalEntry;
    history: DreamGoalEntry[];
    /** ISO timestamp of the goal value last compiled into missions (Phase 2). */
    lastCompiledAt?: string;
    /** The goal value that lastCompiledAt refers to — used for change detection. */
    lastCompiledGoal?: string;
}
/** Phase 2 — snapshot consumed by the GoalCompiler / GoalTicker. */
export interface ActiveGoalSnapshot {
    goal?: string;
    dream?: string;
    goalUpdatedAt?: string;
    lastCompiledAt?: string;
    lastCompiledGoal?: string;
    /** True when there is a goal that differs from what was last compiled. */
    needsCompile: boolean;
}
export declare class DreamGoalStore {
    private readonly stateDir;
    constructor(stateDir?: string);
    setDream(value: string): DreamGoalEntry;
    setGoal(value: string): DreamGoalEntry;
    getDream(): DreamGoalEntry | undefined;
    getGoal(): DreamGoalEntry | undefined;
    /**
     * Phase 2 — snapshot for the goal→mission bridge. `needsCompile` is true
     * when an active goal exists and its value differs from the last compiled
     * value (so the ticker is idempotent: re-running without a goal change is
     * a no-op).
     */
    getActiveGoal(): ActiveGoalSnapshot;
    /**
     * Phase 2 — record that the current goal value was compiled into missions.
     * Subsequent getActiveGoal().needsCompile stays false until the goal changes.
     */
    markCompiled(compiledGoal: string): void;
    summary(): string;
    handleSlashCommand(input: string): string | null;
    private set;
    private label;
    private filePath;
    private load;
    private save;
    private appendMarkdown;
}
