import type { Palette } from "../deploy/index.js"; import type { Cookbook } from "./cookbook.js"; import { type SelectChoice } from "./prompt.js"; type PickPayload = { cookbooks: readonly Cookbook[]; message: string; /** Which row the cursor starts on, first time round. */ recommended?: string; }; /** * Ask which cookbook, showing the full card before it counts as chosen. * * The picker is a loop rather than a single question: reading one card is how * you find out a cookbook is not the one you wanted, so the answer to "not * this" has to be another look rather than a cancelled command. The row just * read stays under the cursor when the palette comes back. * * Returns undefined when `otherChoice` was taken — `init`'s "blank", which is * an answer to the question rather than a refusal to answer it. Callers that * offer no such row always get a cookbook back: every other way out of the * loop exits the process, so there is no "chose nothing" case for them to * handle. */ export declare function pickCookbook(payload: PickPayload & { /** A non-cookbook row offered above the catalog, and what it means. */ otherChoice: SelectChoice; }): Promise; export declare function pickCookbook(payload: PickPayload): Promise; /** * One cookbook in full: what it deploys, what it will ask you for, and the * adaptations it declares. */ export declare function formatCookbook(cookbook: Cookbook, palette: Palette): string; /** * Grouped by the catalog's own `group`, with each cookbook's job wrapped under * its name rather than truncated: the job is the sentence that tells two * cookbooks apart, and cutting it at a column removes exactly the part that * does. The declared resource kinds sit on the name line so you can see what a * cookbook brings into the project without opening `view`. */ export declare function formatList(cookbooks: Cookbook[], palette: Palette): string; export {}; //# sourceMappingURL=cookbookBrowse.d.ts.map