import { type PromptCategoryCount, type PromptEntry, type PromptLoader, type PromptSearchOptions } from '../types/prompt.js'; import type { WstackPaths } from '../utils/wstack-paths.js'; export interface PromptLoaderOptions { paths: WstackPaths; /** Directory containing the bundled dataset (`data/prompts`), if shipped. */ bundledDir?: string | undefined; } /** * DefaultPromptLoader — read-side view over the three prompt layers, merged and * de-duplicated by `slug`. Mirrors `DefaultSkillLoader`. * * Discovery order (higher priority shadows lower by slug): * 1. Project-committed: /.wrongstack/prompts/ (writable, source 'project') * 2. User profile: ~/.wrongstack/profiles//prompts/ (writable, source 'user'/'synced') * 3. Bundled with build: /data/prompts/prompts/** (read-only, source 'builtin') * * Writes go to the user layer by default (or the project layer when * `scope:'project'`). Favoriting/editing a builtin copies it down into the user * layer (copy-on-write) so the read-only dataset is never mutated. */ export declare class DefaultPromptLoader implements PromptLoader { private readonly projectStore?; private readonly userStore?; private readonly builtinDir?; private cache?; private builtinCache?; constructor(opts: PromptLoaderOptions); list(): Promise; find(slugOrId: string): Promise; search(query: string, opts?: PromptSearchOptions): Promise; categories(): Promise; save(entry: PromptEntry, opts?: { scope?: 'user' | 'project'; }): Promise; delete(slugOrId: string): Promise; setFavorite(slugOrId: string, favorite: boolean): Promise; invalidateCache(): void; private readBuiltin; } /** * Fill a prompt's `{{variable}}` placeholders with `values`. Unknown * placeholders are left intact unless a declared variable supplies a `default`. * Returns the rendered string, any required variables left unfilled * (`missing`), and any supplied values outside a variable's declared `enum` * (`invalid`). */ export declare function renderPrompt(entry: PromptEntry, values?: Record): { text: string; missing: string[]; invalid: string[]; }; //# sourceMappingURL=prompt-loader.d.ts.map