import type { SpecStatus, UpdateStatusInput } from '../../types/index.js';
import type { Spec } from '../../types/spec/core.js';
export declare function recordDoneMetrics(projectId: string, specId: string, spec: Spec, actuals: NonNullable<UpdateStatusInput['actuals']>, projectPath?: string): Promise<void>;
/**
 * SPEC-698: A frontmatter sync warning surfaced when `update_status` could not
 * keep the on-disk spec.md status in sync with the data store.
 */
export interface FrontmatterSyncWarning {
    specId: string;
    specPath: string | null;
    reason: string;
}
export declare function syncSpecFiles(updatedSpec: Spec, currentStatus: SpecStatus, newStatus: SpecStatus, projectPath?: string): Promise<{
    warning?: FrontmatterSyncWarning;
}>;
export declare function tryReconcile(newStatus: string, specId: string, projectId: string): Promise<string | null>;
/**
 * SPEC-723: Record a terminal transition event in the hash-chained log.
 * SPEC-734: Now threads sessionId, modelId, and gateResults through to the log entry.
 *
 * Called AFTER the spec.md has been written to disk so the SHA reflects the
 * final on-disk state. Best-effort — never throws.
 */
export declare function recordTerminalTransitionEvent(args: {
    projectId: string;
    specId: string;
    specPath: string | undefined;
    newStatus: 'done' | 'discarded';
    from: string;
    actor?: string;
    sessionId?: string;
    modelId?: string;
    gateResults?: Record<string, 'pass' | 'fail' | 'skip' | 'forced'>;
    meta?: Record<string, unknown>;
}): Promise<void>;
//# sourceMappingURL=file-sync.d.ts.map