import { type CustomPreset } from './registry.js';
import { type StoreFs } from './store/index.js';
/**
 * Project-scoped custom presets (#1025).
 *
 * The user tier (#626) saves a custom preset to the user's home file, so it follows the person
 * across every project and stays private. The project tier saves it into the repo instead, so it
 * travels with the code and everyone who clones the repo gets it — the "share your presets" half
 * of the issue.
 *
 * The store is a plain JSON array of {@link CustomPreset}, the exact shape the user tier uses, so
 * the dashboard renders both from one type and the same sanitizer guards both files.
 */
/** The committed file holding a project's shared custom presets, under `.the-framework/`. */
export declare const PROJECT_PRESETS_FILE = ".the-framework/custom-presets.json";
/**
 * Read a project's shared custom presets. Forgiving like every other read here: a missing,
 * unreadable or malformed file yields `[]`, never throws, and the same sanitizer that guards
 * the home file drops any hand-edited or hostile entry.
 */
export declare function readProjectPresets(cwd: string, fs?: StoreFs): Promise<CustomPreset[]>;
/**
 * Write a project's shared custom presets, sanitizing first so the committed file is always
 * well-formed. Also ensures `.the-framework/.gitignore` un-ignores the file: the dir's ignore is
 * `*` + a short allowlist (only the agent archive is committed by default), so without a negation git would
 * never see the presets and they could not be shared. Removing every preset writes an empty array
 * rather than deleting the file, so the negation stays in place for the next save.
 */
export declare function writeProjectPresets(cwd: string, presets: CustomPreset[], fs?: StoreFs): Promise<void>;
//# sourceMappingURL=project-presets.d.ts.map