import type { BlobStore } from '../../storage/domains/blobs/base.js';
import type { SkillVersionTree } from '../../storage/types.js';
import type { SkillSource, SkillSourceEntry, SkillSourceStat } from './skill-source.js';
/**
 * A skill entry for the composite source.
 * Each entry represents one skill's versioned tree, mounted under a directory name.
 */
export interface VersionedSkillEntry {
    /** Directory name for this skill (used as the subdirectory under the root) */
    dirName: string;
    /** The skill version's file tree manifest */
    tree: SkillVersionTree;
    /** When this version was created */
    versionCreatedAt: Date;
}
/**
 * A SkillSource that composes multiple versioned skill trees into a virtual directory.
 *
 * Each skill is mounted under a directory name, so the composite source looks like:
 *   /                           (root - virtual)
 *   /brand-guidelines/          (skill 1 root)
 *   /brand-guidelines/SKILL.md  (skill 1 files from blob store)
 *   /tone-of-voice/             (skill 2 root)
 *   /tone-of-voice/SKILL.md     (skill 2 files from blob store)
 *
 * This allows WorkspaceSkillsImpl to discover skills normally by scanning the root
 * for subdirectories containing SKILL.md.
 *
 * Can also include a fallback source for "live" skills that read from the filesystem.
 */
export declare class CompositeVersionedSkillSource implements SkillSource {
    #private;
    constructor(entries: VersionedSkillEntry[], blobStore: BlobStore, options?: {
        /** Fallback source for "live" skills that read from the filesystem */
        fallback?: SkillSource;
        /** Skill directory names that should be served from the fallback source */
        fallbackSkills?: string[];
    });
    exists(path: string): Promise<boolean>;
    stat(path: string): Promise<SkillSourceStat>;
    readFile(path: string): Promise<string | Buffer>;
    readdir(path: string): Promise<SkillSourceEntry[]>;
    realpath(path: string): Promise<string>;
}
//# sourceMappingURL=composite-versioned-skill-source.d.ts.map