import type { PackageMode, DecryptParams } from '@opengovsg/formsg-sdk/dist/types'; /** * A function that takes state and returns state (or a Promise of state) */ declare type Operation = (state: any) => any | Promise; /** * Configuration for FormSG adaptor * @typedef {Object} FormSGConfiguration * @property {string} formSecretKey - Your form's secret key from FormSG * @property {PackageMode} [mode='development'] - SDK mode: 'production', 'staging', or 'development' * @property {string} [webhookEndpoint] - The URI of your webhook endpoint */ export interface FormSGConfiguration { formSecretKey: string; mode?: PackageMode; webhookEndpoint?: string; } /** * State object for FormSG operations * @typedef {Object} FormSGState * @property {Object} data - The current data/response * @property {FormSGConfiguration} configuration - FormSG configuration * @property {Array} references - Array of previous data objects */ export interface FormSGState { data: any; configuration: FormSGConfiguration; references?: any[]; } /** * Options for decrypting FormSG submissions * @typedef {Object} DecryptOptions * @property {boolean} [verifySignature=false] - Whether to verify webhook signature * @property {string} [signatureHeader] - The X-FormSG-Signature header value */ export interface DecryptOptions { verifySignature?: boolean; signatureHeader?: string; } /** * Decrypt a FormSG submission * @example * decryptSubmission($.data) * @example * decryptSubmission($.data, { * verifySignature: true, * signatureHeader: $.request.headers['x-formsg-signature'] * }) * @function * @public * @param {DecryptParams} submissionData - The encrypted submission data from FormSG webhook * @param {DecryptOptions} options - Options for decryption * @returns {Operation} * @state {FormSGState} */ export declare function decryptSubmission(submissionData: DecryptParams, options?: DecryptOptions): Operation; /** * Verify a FormSG webhook signature * @example * verifyWebhook($.request.headers['x-formsg-signature']) * @function * @public * @param {string} signatureHeader - The X-FormSG-Signature header value * @returns {Operation} * @state {FormSGState} */ export declare function verifyWebhook(signatureHeader: string): Operation; /** * Process a FormSG webhook (verify and decrypt in one step) * @example * processWebhook($.data, $.request.headers['x-formsg-signature']) * @function * @public * @param {DecryptParams} submissionData - The encrypted submission data from FormSG webhook * @param {string} signatureHeader - The X-FormSG-Signature header value * @returns {Operation} * @state {FormSGState} */ export declare function processWebhook(submissionData: DecryptParams, signatureHeader: string): Operation; export { assert, cursor, dataPath, dataValue, dateFns, each, field, fields, fn, fnIf, lastReferenceValue, merge, sourceValue, } from '@openfn/language-common';