import type { SkillLockEntry } from "../lockfile/types.js";
/**
 * Read the version string from a SKILL.md frontmatter block. Returns null
 * when the file is missing, has no frontmatter, or no `version` field at
 * any supported location.
 */
export declare function readDiskVersion(skillMdPath: string): string | null;
export interface ReconcileResult {
    version: string;
    warning?: string;
}
/**
 * Returns the version that should be reported as `currentVersion` to the
 * platform's `/check-updates` API. Prefers disk frontmatter; falls back to
 * the lockfile-pinned version with a warning when disk is unreadable.
 */
export declare function reconcileLockfileVersion(args: {
    lockfileVersion: string;
    skillMdPath: string;
}): ReconcileResult;
/**
 * Resolve the on-disk SKILL.md path for a given lockfile entry. Returns the
 * conventional path; the file may or may not exist (callers handle the
 * fallback via reconcileLockfileVersion).
 *
 * Resolution order:
 *   1. `entry.installedPath` (if set, append SKILL.md when not already a file)
 *   2. user scope → `~/.claude/skills/<name>/SKILL.md`
 *   3. project scope (default) → `<lockDir>/.claude/skills/<name>/SKILL.md`
 */
export declare function resolveInstallPath(args: {
    name: string;
    entry: SkillLockEntry;
    lockDir: string;
}): string;
/**
 * Compare two semver strings. Returns negative if a < b, positive if a > b,
 * zero if equal. Falls back to localeCompare for non-numeric versions.
 */
export declare function compareSemver(a: string, b: string): number;
