import { type Link, type Page } from '@defra/forms-model'; import { type RouteOptions } from '@hapi/hapi'; import { type ValidationErrorItem } from 'joi'; import { ComponentCollection } from '~/src/server/plugins/engine/components/ComponentCollection.js'; import { type BackLink } from '~/src/server/plugins/engine/components/types.js'; import { type FormModel } from '~/src/server/plugins/engine/models/index.js'; import { PageController } from '~/src/server/plugins/engine/pageControllers/PageController.js'; import { type AnyFormRequest, type FormContext, type FormContextRequest, type FormPageViewModel, type FormPayload, type FormPayloadParams, type FormState, type FormStateValue, type FormSubmissionState } 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 QuestionPageController extends PageController { collection: ComponentCollection; errorSummaryTitle: string; allowSaveAndExit: boolean; constructor(model: FormModel, pageDef: Page); get next(): Link[]; get allowContinue(): boolean; getItemId(request?: FormContextRequest): string | undefined; /** * Used for mapping form payloads and errors to govuk-frontend's template api, so a page can be rendered * @param request - the hapi request * @param context - the form context */ getViewModel(request: FormContextRequest, context: FormContext): FormPageViewModel; getRelevantPath(request: AnyFormRequest, context: FormContext): string; /** * Apply conditions to evaluation state to determine next page path */ getNextPath(context: FormContext): string | undefined; /** * Gets the form payload (from state) for this page only */ getFormDataFromState(request: FormContextRequest | undefined, state: FormSubmissionState): FormPayload; /** * Gets form params (from payload) for this page only */ getFormParams(request?: FormContextRequest): FormPayloadParams; getStateFromValidForm(request: FormContextRequest, state: FormSubmissionState, payload: FormPayload): FormState; getErrors(details?: ValidationErrorItem[]): import("~/src/server/plugins/engine/types.js").FormSubmissionError[] | undefined; getState(request: AnyFormRequest): Promise; setState(request: AnyFormRequest, state: FormSubmissionState): Promise; mergeState(request: AnyFormRequest, state: FormSubmissionState, update: object): Promise; filterConditionalComponents(viewModel: FormPageViewModel, model: FormModel, evaluationState: Partial>): import("~/src/server/plugins/engine/components/types.js").ComponentViewModel[]; makeGetRouteHandler(): (request: FormRequest, context: FormContext, h: FormResponseToolkit) => Promise; hasMissingNotificationEmail(request: FormRequest, context: FormContext): Promise; /** * Get the back link for a given progress. */ protected getBackLink(request: FormContextRequest, context: FormContext): BackLink | undefined; makePostRouteHandler(): (request: FormRequestPayload, context: FormContext, h: FormResponseToolkit) => Promise; private dispatchExternal; proceed(request: FormContextRequest, h: FormResponseToolkit, nextPath?: string): import("@hapi/hapi").ResponseObject; /** * Handle save-and-exit action */ handleSaveAndExit(request: FormRequestPayload, context: FormContext, h: FormResponseToolkit): import("@hapi/hapi").ResponseObject; /** * {@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; }