import type { FormResult } from '../../core/surface.js'; import type { PageInput } from '../page.js'; export interface FormSlices { surface: 'form'; form: { title: string; subtitle: string; introHtml: string; /** the write target — document · block · action, the panel's own attrs */ document: string; block: string; action: string; submit: string; after: { message: string; address: 'link' | 'text' | 'none'; again: boolean; }; /** where a filed record can be OPENED — the KB's page URL, from the host * (PageInput.homeUrl). Empty string means the host named none, and the * thank-you fails closed to `text` (design §5 item 6): a link built * against '' would be a link to this same intake page, which is a wrong * answer that looks right. */ home: string; }; } /** * The form-shaped payload slice. No `shared` argument: the R9 rule it would * carry (one concept index, computed by the caller) has no consumer here — * nothing in this slice indexes into the concepts array. */ export declare function formSlices(input: PageInput, form: FormResult): FormSlices; /** * The DashboardResult-shaped adapter the SHELL needs around a form (the * report's precedent): renderShell reads `input.result` for the page * and for runtimesNeeded's walks. A form has no navigation and no views — * empty lists are the honest answer, and the runtimes the CONTENT needs are * still found, because runtimesNeeded walks the DEFINITION's form fields for * `diagram`/`concepts` kinds independently of any view. */ export declare function formRenderResult(form: FormResult): PageInput['result'];