import { ComponentType, type ComponentDef } from '@defra/forms-model';
import { type ComponentBase } from '~/src/server/plugins/engine/components/ComponentBase.js';
import { ListFormComponent } from '~/src/server/plugins/engine/components/ListFormComponent.js';
import * as Components from '~/src/server/plugins/engine/components/index.js';
import { type FormState } from '~/src/server/plugins/engine/types.js';
export type Component = InstanceType<(typeof Components)[keyof typeof Components]>;
export type Field = InstanceType<typeof Components.AutocompleteField | typeof Components.RadiosField | typeof Components.YesNoField | typeof Components.CheckboxesField | typeof Components.DatePartsField | typeof Components.EastingNorthingField | typeof Components.EmailAddressField | typeof Components.LatLongField | typeof Components.MonthYearField | typeof Components.MultilineTextField | typeof Components.NationalGridFieldNumberField | typeof Components.NumberField | typeof Components.OsGridRefField | typeof Components.SelectField | typeof Components.TelephoneNumberField | typeof Components.TextField | typeof Components.UkAddressField | typeof Components.FileUploadField>;
export type Guidance = InstanceType<typeof Components.Details> | InstanceType<typeof Components.Html> | InstanceType<typeof Components.Markdown> | InstanceType<typeof Components.InsetText> | InstanceType<typeof Components.List>;
export type ListField = InstanceType<typeof Components.AutocompleteField | typeof Components.CheckboxesField | typeof Components.RadiosField | typeof Components.SelectField | typeof Components.YesNoField>;
export declare const designerUrl: string;
export { markdown } from '~/src/server/plugins/engine/components/markdownParser.js';
/**
 * Filter known components with lists
 */
export declare function hasListFormField(field?: Partial<Component>): field is ListFormComponent;
export declare function isListFieldType(type?: ComponentType): type is ListField['type'];
/**
 * Create field instance for each {@link ComponentDef} type
 */
export declare function createComponent(def: ComponentDef, options: ConstructorParameters<typeof ComponentBase>[1]): Component;
/**
 * Get formatted answer for a field
 */
export declare function getAnswer(field: Field, state: FormState, options?: {
    format: 'data' | 'email' | 'summary';
}): string;
/**
 * Get formatted answer for a field (Markdown only)
 */
export declare function getAnswerMarkdown(field: Field, state: FormState, options?: {
    format: 'email' | 'summary';
}): string;
