import { type CustomValidator } from 'joi';
import { type EastingNorthingField } from '~/src/server/plugins/engine/components/EastingNorthingField.js';
import { type LatLongField } from '~/src/server/plugins/engine/components/LatLongField.js';
import { type DateInputItem, type Label, type ViewModel } from '~/src/server/plugins/engine/components/types.js';
import { type FormPayload, type FormSubmissionError, type FormValue } from '~/src/server/plugins/engine/types.js';
export type LocationField = InstanceType<typeof EastingNorthingField> | InstanceType<typeof LatLongField>;
export declare function getLocationFieldViewModel(component: LocationField, viewModel: ViewModel & {
    label: Label;
    id: string;
    name: string;
    value: FormValue;
}, payload: FormPayload, errors?: FormSubmissionError[]): {
    fieldset: {
        attributes?: string | Record<string, string>;
        legend?: Label;
    };
    items: DateInputItem[];
    label: Label;
    type?: string;
    id: string;
    name: string;
    value: FormValue;
    hint?: {
        id?: string;
        text: string;
    };
    prefix?: import("~/src/server/plugins/engine/components/types.js").ComponentText;
    suffix?: import("~/src/server/plugins/engine/components/types.js").ComponentText;
    classes?: string;
    condition?: string;
    errors?: FormSubmissionError[];
    errorMessage?: {
        text: string;
    };
    summaryHtml?: string;
    html?: string;
    attributes: {
        autocomplete?: string;
        maxlength?: number;
        multiple?: string;
        accept?: string;
        inputmode?: string;
    };
    content?: import("~/src/server/plugins/engine/components/types.js").Content | import("~/src/server/plugins/engine/components/types.js").Content[] | string;
    maxlength?: number;
    maxwords?: number;
    rows?: number;
    formGroup?: {
        classes?: string;
        attributes?: string | Record<string, string>;
    };
    components?: import("~/src/server/plugins/engine/components/types.js").ComponentViewModel[];
    upload?: {
        count: number;
        summaryList: import("~/src/server/plugins/engine/types.js").SummaryList;
    };
} | {
    instructionText: string;
    fieldset: {
        attributes?: string | Record<string, string>;
        legend?: Label;
    };
    items: DateInputItem[];
    label: Label;
    type?: string;
    id: string;
    name: string;
    value: FormValue;
    hint?: {
        id?: string;
        text: string;
    };
    prefix?: import("~/src/server/plugins/engine/components/types.js").ComponentText;
    suffix?: import("~/src/server/plugins/engine/components/types.js").ComponentText;
    classes?: string;
    condition?: string;
    errors?: FormSubmissionError[];
    errorMessage?: {
        text: string;
    };
    summaryHtml?: string;
    html?: string;
    attributes: {
        autocomplete?: string;
        maxlength?: number;
        multiple?: string;
        accept?: string;
        inputmode?: string;
    };
    content?: import("~/src/server/plugins/engine/components/types.js").Content | import("~/src/server/plugins/engine/components/types.js").Content[] | string;
    maxlength?: number;
    maxwords?: number;
    rows?: number;
    formGroup?: {
        classes?: string;
        attributes?: string | Record<string, string>;
    };
    components?: import("~/src/server/plugins/engine/components/types.js").ComponentViewModel[];
    upload?: {
        count: number;
        summaryList: import("~/src/server/plugins/engine/types.js").SummaryList;
    };
};
/**
 * Validator factory for location-based fields.
 * This creates a validator that ensures all required fields are present.
 */
export declare function createLocationFieldValidator(component: LocationField): CustomValidator;
