import type { ParsedBrief } from "./parse-brief.js"; import type { BrandPreset, CustomBrandInputs, DbStrategy, ProjectType, ScaffoldInputs } from "./index.js"; import { BRANDS, DB_STRATEGIES, PROJECT_TYPES } from "./index.js"; export type Prompter = (message: string, defaultValue?: string) => Promise; /** * Thrown when the user types an exit keyword (`cancel` / `abort` / `quit` / * `q`) at the confirmation prompt. Before v0.2.1 the only escape from the * confirm loop was Ctrl+C (the 2026-06-03 dogfood finding #3). The CLI catches * this and exits cleanly without writing any files. */ export declare class ConfirmCancelledError extends Error { constructor(message?: string); } /** Exit keywords accepted at the confirmation prompt (case-insensitive). */ export declare const CONFIRM_CANCEL_KEYWORDS: readonly ["cancel", "abort", "quit", "q"]; export interface ConfirmOptions { prompter: Prompter; output?: NodeJS.WritableStream; /** Skips on-disk checks for the target path; tests set this to true. */ skipFsChecks?: boolean; } export { BRANDS, DB_STRATEGIES, PROJECT_TYPES }; export declare const UNSET_PLACEHOLDER = "[unset \u2014 please type]"; type ParseResult = { ok: true; value: T; } | { ok: false; error: string; }; interface Draft { slug: string | null; description: string | null; projectType: ProjectType | null; brand: BrandPreset | null; githubOrg: string | null; targetPath: string | null; dbStrategy: DbStrategy | null; hasWebUi: boolean | null; hasCron: boolean | null; participateInBulletin: boolean | null; sendsEmail: boolean; hasUserContent: boolean; hasObservability: boolean; acceptsCards: boolean; hasPublicSurface: boolean; customBrand: CustomBrandInputs | null; } export declare function renderDraft(draft: Draft): string; export declare function parseSlug(raw: string): ParseResult; /** * Display the parsed brief as a numbered checklist and loop until the user * accepts a complete-and-valid state. * * The user types a field number to edit; an empty line accepts. The loop * refuses to accept while any field is still `[unset — please type]`. */ export declare function confirmInputs(parsed: ParsedBrief, opts: ConfirmOptions): Promise;