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 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;
    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<FormRequestRefs>;
    /**
     * {@link https://hapi.dev/api/?v=20.1.2#route-options}
     */
    get postRouteOptions(): RouteOptions<FormRequestPayloadRefs>;
    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<Lifecycle.Method<FormRequestRefs>>;
    makePostRouteHandler(): (request: FormRequestPayload, context: FormContext, h: FormResponseToolkit) => ReturnType<Lifecycle.Method<FormRequestPayloadRefs>>;
    shouldShowSaveAndExit(server: Server): boolean;
}
