/**
 * Built-in skill stores + the storage-config factory.
 *
 * First-party backends: in-process memory (tests, embedded), filesystem
 * (curator-style JSON alongside Claude-skills-style markdown — `<name>.md`
 * or `<name>/SKILL.md` with YAML frontmatter), S3 (skillStoreS3.ts, optional
 * @aws-sdk/client-s3 peer), and Redis (skillStoreRedis.ts, pooled core
 * client). Anything else plugs in via `{ type: "custom", store }`.
 */
import type { SkillDefinition, SkillIndexItem, SkillStore, SkillsStorageConfig } from "../types/index.js";
/** In-process store backed by a Map. */
export declare class InMemorySkillStore implements SkillStore {
    private skills;
    constructor(seed?: SkillDefinition[]);
    get(id: string): Promise<SkillDefinition | null>;
    put(skill: SkillDefinition): Promise<void>;
    delete(id: string): Promise<void>;
    index(): Promise<SkillIndexItem[]>;
}
/**
 * Directory-backed store. Read layouts:
 *  - `<dir>/<id>.json`      — JSON SkillDefinition (mutable)
 *  - `<dir>/<name>.md`      — frontmatter markdown (read-only source)
 *  - `<dir>/<name>/SKILL.md` — Claude-skills directory layout (read-only source)
 * Mutations always write `<id>.json`; a JSON file shadows a markdown skill
 * with the same id, so updating a markdown-sourced skill "copies up" to JSON.
 */
export declare class FileSystemSkillStore implements SkillStore {
    private readonly baseDir;
    private cache;
    constructor(baseDir: string);
    invalidate(): void;
    get(id: string): Promise<SkillDefinition | null>;
    put(skill: SkillDefinition): Promise<void>;
    delete(id: string): Promise<void>;
    index(): Promise<SkillIndexItem[]>;
    /**
     * Scan the directory into an id→skill map. Markdown sources load first
     * so JSON files (the mutable layer) shadow them on id collision.
     */
    private load;
}
/** Resolve a storage config to a concrete store. Defaults to memory. */
export declare function createSkillStore(config?: SkillsStorageConfig): SkillStore;
