import { type ReqRefDefaults, type Request, type ResponseToolkit } from '@hapi/hapi' import { type FormPayload } from '~/src/server/plugins/engine/types.js' export interface FormQuery extends Partial> { /** * Allow preview URL direct access without relevant page checks */ force?: string /** * Redirect location after 'continue' form action */ returnUrl?: string } export interface FormParams extends Partial> { path: string slug: string state?: FormStatus } export interface FormRequestRefs extends Omit< ReqRefDefaults, 'Params' | 'Payload' | 'Query' > { Params: FormParams Payload: object | undefined Query: FormQuery } export interface FormRequestPayloadRefs extends FormRequestRefs { Payload: FormPayload } export type FormRequest = Request export type FormRequestPayload = Request export type FormResponseToolkit = Pick< ResponseToolkit, 'redirect' | 'view' | 'continue' > export enum FormAction { Continue = 'continue', Validate = 'validate', Delete = 'delete', AddAnother = 'add-another', Send = 'send', SaveAndExit = 'save-and-exit', External = 'external' } export enum FormStatus { Draft = 'draft', Live = 'live' } export enum ExternalActions { PostcodeLookup = 'postcode-lookup', AnotherExternalAction = 'another-external-action' }