/**
 * Validates and sanitises i18n object.
 *
 * @param {object} i18n Object to validate.
 * @param {Function} cb Callback function that receives the validated value.
 * @returns {object} Sanitised i18n object.
 * @throws {TypeError} For invalid object.
 * @access private
 */
export function validateI18nObject(i18n?: object, cb?: Function): object;
/**
 * Validates and sanitises i18n directory.
 *
 * @param {Array} dirs Array of directories.
 * @returns {Array} Array of directories.
 * @throws {SyntaxError} For invalid directories.
 * @throws {TypeError} For invalid type.
 * @access private
 */
export function validateI18nDirs(dirs?: any[]): any[];
/**
 * Validates and sanitises i18n locales.
 *
 * @param {Array} locales Array of locales.
 * @returns {Array} Array of locales.
 * @throws {SyntaxError} For invalid locales.
 * @throws {TypeError} For invalid type.
 * @access private
 */
export function validateI18nLocales(locales?: any[]): any[];
/**
 * Validates the i18n fallback language.
 *
 * @param {string} [fallback] Locale
 * @param {Array} locales Array of valid locales.
 * @returns {string} Fallback locale
 * @throws {SyntaxError} For invalid locales.
 * @throws {TypeError} For invalid type.
 * @access private
 */
export function validateI18nFallbackLng(fallback?: string, locales?: any[]): string;
/**
 * Validates and sanitises mount url.
 *
 * @param {string} mountUrl Prefix for all URLs in the browser address bar
 * @returns {string | undefined} Sanitised URL.
 * @throws {SyntaxError} For invalid URL.
 * @access private
 */
export function validateMountUrl(mountUrl: string): string | undefined;
/**
 * Validates and sanitises sessions object.
 *
 * @param {object} session Object to validate.
 * @param {Function} cb Callback function that receives the validated value.
 * @returns {object} Sanitised sessions object.
 * @throws {TypeError} For invalid object.
 * @access private
 */
export function validateSessionObject(session?: object, cb?: Function): object;
/**
 * Validates and sanitises view directory.
 *
 * @param {Array} dirs Array of directories.
 * @returns {Array} Array of directories.
 * @throws {SyntaxError} For invalid directories.
 * @throws {TypeError} For invalid type.
 * @access private
 */
export function validateViews(dirs?: any[]): any[];
/**
 * Validates and sanitises sessions secret.
 *
 * @param {string} secret Session secret.
 * @returns {string} Secret.
 * @throws {ReferenceError} For missing value type.
 * @throws {TypeError} For invalid value.
 * @access private
 */
export function validateSessionSecret(secret: string): string;
/**
 * Validates and sanitises sessions ttl.
 *
 * @param {number} ttl Session ttl (seconds).
 * @returns {number} Ttl.
 * @throws {ReferenceError} For missing value type.
 * @throws {TypeError} For invalid value.
 * @access private
 */
export function validateSessionTtl(ttl?: number): number;
/**
 * Validates and sanitises sessions name.
 *
 * @param {string} [name] Session name. Default is `casa-session`
 * @returns {string} Name.
 * @throws {ReferenceError} For missing value type.
 * @throws {TypeError} For invalid value.
 * @access private
 */
export function validateSessionName(name?: string): string;
/**
 * Validates and sanitises sessions secure flag.
 *
 * @param {boolean} [secure] Session secure flag.
 * @returns {string} Name.
 * @throws {ReferenceError} For missing value type.
 * @throws {TypeError} For invalid or missing value.
 * @access private
 */
export function validateSessionSecure(secure?: boolean): string;
/**
 * Validates and sanitises sessions store.
 *
 * @param {Function} store Session store.
 * @returns {Function} Store.
 * @access private
 */
export function validateSessionStore(store: Function): Function;
/**
 * Validates and sanitises sessions cookie url path.
 *
 * @param {string} cookiePath Session cookie url path.
 * @param {string} defaultPath Default path if none specified.
 * @returns {string} Cookie path.
 * @access private
 */
export function validateSessionCookiePath(cookiePath: string, defaultPath?: string): string;
/**
 * Validates and sanitises sessions cookie "sameSite" flag. One of: true
 * (Strict) false (will not set the flag at all) Strict Lax None
 *
 * @param {any} cookieSameSite Session cookie "sameSite" flag
 * @param {any} defaultFlag Default path if none specified
 * @returns {boolean} Cookie path
 * @throws {TypeError} When invalid arguments are provided
 * @access private
 */
/**
 * Validates errorVisibility.
 *
 * @param {string} errorVisibility Sets visibility flag for page validation
 *   error
 * @returns {symbol | Function} Flag for error visibility.
 * @throws {SyntaxError} For invalid errorVisibility flag.
 * @access private
 */
export function validateErrorVisibility(errorVisibility?: string): symbol | Function;
/**
 * @param {boolean | string} cookieSameSite Cookie SameSite value
 * @param {boolean | string} defaultFlag Default value
 * @returns {boolean | string} Validated value
 */
export function validateSessionCookieSameSite(cookieSameSite: boolean | string, defaultFlag: boolean | string): boolean | string;
/**
 * @param {PageHook[]} hooks Page hook functions
 * @returns {PageHook[]} Validated page hooks
 */
export function validatePageHooks(hooks: PageHook[]): PageHook[];
/**
 * @param {PageField[]} fields Page fields
 * @returns {PageField[]} Validated fields
 */
export function validateFields(fields: PageField[]): PageField[];
/**
 * @param {Page[]} [pages] Pages
 * @returns {Page[]} Validated pages
 */
export function validatePages(pages?: Page[]): Page[];
/**
 * @param {Plan} plan Plan
 * @returns {Plan} Validated plan
 */
export function validatePlan(plan: Plan): Plan;
/**
 * @param {GlobalHook[]} hooks Global hook functions
 * @returns {GlobalHook[]} Validated global hooks
 */
export function validateGlobalHooks(hooks: GlobalHook[]): GlobalHook[];
/**
 * @param {IPlugin[]} plugins Plugins
 * @returns {IPlugin[]} Validated plugins
 */
export function validatePlugins(plugins: IPlugin[]): IPlugin[];
/**
 * @param {ContextEventHandler[]} events Event handlers
 * @returns {ContextEventHandler[]} Validated event handlers
 */
export function validateEvents(events: ContextEventHandler[]): ContextEventHandler[];
/**
 * Validates helmet configuration function.
 *
 * @param {HelmetConfigurator} helmetConfigurator Configuration function
 * @returns {HelmetConfigurator} Validated configuration function
 * @throws {TypeError} When passed a non-function
 * @access private
 */
export function validateHelmetConfigurator(helmetConfigurator: HelmetConfigurator): HelmetConfigurator;
/**
 * @param {number} value Max params value
 * @param {number} [defaultValue] Default value
 * @returns {number} Valid value
 * @throws {TypeError} If not an integer
 * @throws {RangeError} If out of bounds
 */
export function validateFormMaxParams(value: number, defaultValue?: number): number;
/**
 * @param {number} value Max bytes value
 * @param {number} [defaultValue] Default value
 * @returns {number} Valid value
 * @throws {TypeError} If not an integer
 * @throws {RangeError} If out of bounds
 */
export function validateFormMaxBytes(value: number, defaultValue?: number): number;
/**
 * @param {ContextIdGenerator} generator ID generator function
 * @returns {ContextIdGenerator} Validated generator
 * @throws {TypeError} If not a function
 */
export function validateContextIdGenerator(generator: ContextIdGenerator): ContextIdGenerator;
/**
 * Validates the govuk rebrand feature flag.
 *
 * @param {boolean} [govukRebrand] Govuk rebrand feature flag
 * @returns {boolean | true} Boolean.
 * @throws {TypeError} For invalid feagure flag is set.
 * @access private
 */
export function validateGovukRebrand(govukRebrand?: boolean): boolean | true;
/**
 * Ingest, validate, sanitise and manipulate configuration parameters.
 *
 * @param {ConfigurationOptions} config Config to ingest.
 * @returns {object} Immutable config object.
 * @throws {Error | SyntaxError | TypeError} For invalid config values.
 * @access private
 */
export default function ingest(config?: ConfigurationOptions): object;
export type ConfigurationOptions = import("../casa").ConfigurationOptions;
export type HelmetConfigurator = import("../casa").HelmetConfigurator;
export type Page = import("../casa").Page;
export type PageHook = import("../casa").PageHook;
export type GlobalHook = import("../casa").GlobalHook;
export type IPlugin = import("../casa").IPlugin;
export type ContextEventHandler = import("../casa").ContextEventHandler;
export type ContextIdGenerator = import("../casa").ContextIdGenerator;
import { PageField } from "./field.js";
import Plan from "./Plan.js";
