import { type Events, type FormDefinition, type Page, type Section } from '@defra/forms-model'; import { type Lifecycle, type RouteOptions, type Server } from '@hapi/hapi'; import { type ComponentCollection } from '~/src/server/plugins/engine/components/ComponentCollection.js'; import { type FormComponent } from '~/src/server/plugins/engine/components/FormComponent.js'; import { type FormModel } from '~/src/server/plugins/engine/models/index.js'; import { type ExecutableCondition } from '~/src/server/plugins/engine/models/types.js'; import { type FormContext, type PageViewModelBase } from '~/src/server/plugins/engine/types.js'; import { type FormRequest, type FormRequestPayload, type FormRequestPayloadRefs, type FormRequestRefs, type FormResponseToolkit } from '~/src/server/routes/types.js'; export declare class PageController { /** * The base class for all page controllers. Page controllers are responsible for generating the get and post route handlers when a user navigates to `/{id}/{path*}`. */ def: FormDefinition; name?: string; model: FormModel; pageDef: Page; id?: string; title: string; section?: Section; condition?: ExecutableCondition; events?: Events; collection?: ComponentCollection; viewName: string; allowSaveAndExit: boolean; constructor(model: FormModel, pageDef: Page); get path(): string; get href(): string; get keys(): string[]; /** * {@link https://hapi.dev/api/?v=20.1.2#route-options} */ get getRouteOptions(): RouteOptions; /** * {@link https://hapi.dev/api/?v=20.1.2#route-options} */ get postRouteOptions(): RouteOptions; get viewModel(): PageViewModelBase; get feedbackLink(): string | undefined; get phaseTag(): "beta" | "alpha" | undefined; getHref(path: string): string; getStartPath(): string; getSummaryPath(): string; getStatusPath(): string; makeGetRouteHandler(): (request: FormRequest, context: FormContext, h: FormResponseToolkit) => ReturnType>; makePostRouteHandler(): (request: FormRequestPayload, context: FormContext, h: FormResponseToolkit) => ReturnType>; /** * Get supplementary state keys for clearing component state. * * This method returns page controller-level state keys only. The core component's * state key (the component's name) is managed separately by the framework and should * NOT be included in the returned array. * * Returns an empty array by default. Override in subclasses to provide * page-specific supplementary state keys (e.g., upload state, cached data). * @param _component - The component to get supplementary state keys for (optional) * @returns Array of supplementary state keys to clear (excluding the component name itself) */ getStateKeys(_component?: FormComponent): string[]; shouldShowSaveAndExit(server: Server): boolean; }