import type { SkillLockEntry } from "../lockfile/types.js";
export interface BuildGitHubInstallLockEntryArgs {
    /** Resolved skill version (frontmatter `version:` or "1.0.0" fallback). */
    version: string;
    /** SHA of the SKILL.md content (for ghost-file detection on update). */
    sha: string;
    /** GitHub owner (e.g. "anton-abyzov"). */
    owner: string;
    /** GitHub repo (e.g. "vskill"). */
    repo: string;
    /**
     * Repo-relative path to the skill's SKILL.md (e.g.
     * "plugins/sw/skills/greet-anton/SKILL.md", or "SKILL.md" for root).
     *
     * Pass `null` only when the path is genuinely unknown — the studio will
     * then fall back to the local-path copy-chip instead of synthesising a
     * (likely-wrong) GitHub blob URL.
     */
    sourceSkillPath: string | null;
    /** Branch/ref used when installing from GitHub. */
    branch?: string | null;
    /** Commit SHA at install time. */
    commitSha?: string | null;
    /** Plugin namespace that owns this skill, if discovered from plugins/<name>/skills/. */
    pluginName?: string | null;
    /** Whether this is a user-global install (`--global`) vs project-local. */
    global: boolean;
    /** ISO timestamp; injected for deterministic tests, defaults to `now`. */
    installedAt?: string;
}
export declare function buildGitHubInstallLockEntry(args: BuildGitHubInstallLockEntryArgs): SkillLockEntry;
