export interface SyncSkillsOptions {
    /** Absolute path to the bundled skills/ dir (the source of truth). */
    sourceSkillsDir: string;
    /** Absolute path to ~/.claude/skills (where CLI agents read skills from). */
    targetSkillsDir: string;
    /** The current package version — gates the sync (skip when unchanged). */
    version: string;
    /**
     * Where the "last synced version" marker lives. MUST be OUTSIDE the copied
     * subtree (a sibling of the per-skill dirs, e.g. a `.json` directly under
     * targetSkillsDir) so a copy of `autoviral/` never deletes it.
     */
    markerPath: string;
    /** Optional logger; defaults to console. */
    logger?: {
        log?: (msg: string) => void;
        warn?: (msg: string) => void;
    };
}
export interface SyncSkillsResult {
    synced: boolean;
    reason: string;
}
/**
 * Sync the bundled skills into ~/.claude/skills when needed.
 *
 * Syncs when:
 *   - the target's `autoviral` skill is MISSING (recover it), OR
 *   - the marker's recorded version differs from `version` (update on bump).
 * Skips (no copy) when:
 *   - the marker already records `version` AND the skill is present
 *     (don't clobber user edits on every boot), OR
 *   - source and target resolve to the SAME real path, or the target's
 *     `autoviral` is a symlink back into the source (dev symlink — never
 *     self-overwrite).
 */
export declare function syncSkills(opts: SyncSkillsOptions): Promise<SyncSkillsResult>;
//# sourceMappingURL=skill-sync.d.ts.map