import { type SyncAction, type SyncActionKind, type SyncReadDependencies } from "./artifact-sync.js";
export type { SyncAction, SyncActionKind, SyncReadDependencies };
/** Result of one sync run. */
export interface SyncReport {
    /** Actions taken (or planned, when dryRun) — excludes unchanged entries */
    readonly actions: readonly SyncAction[];
    /** Required keys that are missing and cannot be defaulted */
    readonly missingRequired: readonly {
        key: string;
        setupHint: string;
    }[];
    /** True when the run was a dry run (nothing written) */
    readonly dryRun: boolean;
}
/** Options for {@link runConfigSync}. */
export interface SyncOptions {
    /** Report without writing anything */
    readonly dryRun?: boolean;
    /** Optional confined readers used by side-effect-free callers. */
    readonly reads?: SyncReadDependencies;
}
/**
 * Run one populate-and-sync pass over a project.
 *
 * Precedence per setting: existing config value → existing artifact value →
 * built-in default. After population, every existing artifact file is
 * rewritten from the (local-overlaid) config value.
 * @param destDir - Absolute path to the project root
 * @param options - Sync options
 * @returns Report of every action taken (or planned, when dryRun)
 */
export declare function runConfigSync(destDir: string, options?: SyncOptions): Promise<SyncReport>;
//# sourceMappingURL=config-sync.d.ts.map