export type SkillScope = "own" | "installed" | "global";
export type StudioOpName = "promote" | "revert" | "test-install" | "skill-create" | "skill-edit" | "skill-delete" | "model-config-change";
export type StudioOp = {
    id: string;
    ts: number;
    op: StudioOpName;
    skillId?: string;
    fromScope?: SkillScope;
    toScope?: SkillScope;
    paths?: {
        source: string;
        dest: string;
    };
    actor: "studio-ui";
    details?: Record<string, unknown>;
};
export type Provenance = {
    promotedFrom: "installed" | "global";
    sourcePath: string;
    promotedAt: number;
    sourceSkillVersion?: string;
    /** Set when this skill was created via `vskill clone`. */
    forkedFrom?: {
        source: string;
        version: string;
        clonedAt: string;
    };
    /** Set when the source itself was a fork — points to the deepest known ancestor. */
    originalSource?: {
        repoUrl?: string;
        skillPath?: string;
    };
    /** Chain of intermediate `forkedFrom.source` values when forking a fork. Oldest-first (`forkChain[0]` is the deepest ancestor; latest intermediate parent is appended at the end). */
    forkChain?: string[];
};
export type TransferEventName = "started" | "copied" | "deleted" | "indexed" | "done" | "error";
export type TransferEvent = {
    type: "started";
    opId: string;
    skillId: string;
    fromScope: string;
    toScope: string;
    sourcePath: string;
    destPath: string;
} | {
    type: "copied";
    filesWritten: number;
} | {
    type: "deleted";
    filesDeleted: number;
} | {
    type: "indexed";
} | {
    type: "done";
    opId: string;
    destPath: string;
} | {
    type: "error";
    code: string;
    message: string;
};
