import type { Response } from 'express';
import type { INodeExecutionData, IDataObject, IWebhookFunctions, FormFieldsParameter, NodeTypeAndVersion } from 'n8n-workflow';
import type { FormTriggerData } from '../interfaces';
export declare function sanitizeHtml(text: string): string;
/**
 *  Replaces `\n` strings with actual newline characters.
 *  Also replaces `\\n` strings with `\n` string
 * @param text - The text to replace newlines in
 * @returns Updated text
 */
export declare const handleNewlines: (text: string) => string;
export declare const prepareFormFields: (fields: FormFieldsParameter) => {
    fieldLabel: string;
    elementName?: string;
    fieldType?: string;
    requiredField?: boolean;
    fieldOptions?: {
        values: Array<{
            option: string;
        }>;
    };
    multiselect?: boolean;
    multipleFiles?: boolean;
    acceptFileTypes?: string;
    formatDate?: string;
    html?: string;
    placeholder?: string;
    defaultValue?: string;
    fieldName?: string;
    fieldValue?: string;
    limitSelection?: "exact" | "range" | "unlimited";
    numberOfSelections?: number;
    minSelections?: number;
    maxSelections?: number;
}[];
export declare function sanitizeCustomCss(css: string | undefined): string | undefined;
/**
 * Validates that a URL uses a safe scheme.
 * Returns the normalized URL if valid, or null if invalid.
 */
export declare function validateSafeRedirectUrl(url: string | undefined): string | null;
export declare function createDescriptionMetadata(description: string): string;
export declare function prepareFormData({ formTitle, formDescription, formSubmittedHeader, formSubmittedText, redirectUrl, formFields, testRun, query, instanceId, useResponseData, appendAttribution, buttonLabel, customCss, nodeVersion, authToken, }: {
    formTitle: string;
    formDescription: string;
    formSubmittedText: string | undefined;
    redirectUrl: string | undefined;
    formFields: FormFieldsParameter;
    testRun: boolean;
    query: IDataObject;
    instanceId?: string;
    useResponseData?: boolean;
    appendAttribution?: boolean;
    buttonLabel?: string;
    formSubmittedHeader?: string;
    customCss?: string;
    nodeVersion?: number;
    authToken?: string;
}): FormTriggerData;
export declare const validateResponseModeConfiguration: (context: IWebhookFunctions) => void;
export declare function addFormResponseDataToReturnItem(returnItem: INodeExecutionData, formFields: FormFieldsParameter, bodyData: IDataObject, nodeVersion?: number): void;
export declare function prepareFormReturnItem(context: IWebhookFunctions, formFields: FormFieldsParameter, mode: 'test' | 'production', useWorkflowTimezone?: boolean): Promise<INodeExecutionData>;
export declare function renderForm({ context, res, formTitle, formDescription, formFields, responseMode, mode, formSubmittedText, redirectUrl, appendAttribution, buttonLabel, customCss, authToken, }: {
    context: IWebhookFunctions;
    res: Response;
    formTitle: string;
    formDescription: string;
    formFields: FormFieldsParameter;
    responseMode: string;
    mode: 'test' | 'production';
    formSubmittedText?: string;
    redirectUrl?: string;
    appendAttribution?: boolean;
    buttonLabel?: string;
    customCss?: string;
    authToken?: string;
}): void;
export declare const isFormConnected: (nodes: NodeTypeAndVersion[]) => boolean;
export declare function formWebhook(context: IWebhookFunctions, authProperty?: string): Promise<{
    noWebhookResponse: boolean;
    webhookResponse?: undefined;
    workflowData?: undefined;
} | {
    webhookResponse: {
        status: number;
    };
    workflowData: INodeExecutionData[][];
    noWebhookResponse?: undefined;
}>;
export declare function resolveRawData(context: IWebhookFunctions, rawData: string): string;
type ParseFormFieldsOptions = {
    defineForm: 'json' | 'fields';
    fieldsParameterName: string;
    mode?: 'test' | 'production';
};
export declare function parseFormFields(context: IWebhookFunctions, options: ParseFormFieldsOptions): FormFieldsParameter;
export {};
//# sourceMappingURL=utils.d.ts.map