import { IDataForSubmit } from '../util';
import { Base64 } from '../helpers/base64';
import { DocumentTypeIndex } from '../environment/documentTypes';
interface IRequestBase {
    frontImageBase64: Base64;
    backOrSecondImageBase64: Base64;
    faceImageBase64: Base64;
    ssn: string;
    frontMultiImagesBase64: Base64;
    faceMultiImagesBase64: Base64;
    documentType: DocumentTypeIndex | 0;
}
interface IRequestV3 extends IRequestBase {
    trackString: string;
    verifyFace: boolean;
    captureMethod: string;
    userAgent: string;
    frontEndMetadata: string;
    metadata?: string;
}
interface IRequestV4 extends IRequestBase {
    trackString: {
        data: string;
        barcodeParams: string;
    };
    metadata: {
        captureMethod: string;
        userAgent: string;
        frontEndMetadata: string;
        otherMetadata?: string;
    };
}
export interface IPrepareRequestDataForDiveApiParams<P = Record<string, unknown>> {
    data?: IDataForSubmit;
    payload?: P;
    versionAPI?: '3' | '3.1' | '4';
}
type IRequestPayload = Record<string, unknown>;
/**
 * Prepares request payload for Dive API (v3 / v3.1 / v4) based on submitted capture data.
 *
 * Builds a normalized request object:
 * - extracts base64 images (front, back/second, face)
 * - prepares multi-capture images if available
 * - parses metadata
 * - adjusts payload structure depending on API version
 *
 * @template P - Additional custom payload fields to be merged into the request
 *
 * @param params - Parameters object
 * @param params.data - Raw data collected from the results of the IDVC capture flow
 * @param params.payload - Optional custom fields to extend the request payload
 * @param params.versionAPI - Target Dive API version (`'3' | '3.1' | '4'`)
 *
 * @returns Promise resolving to a prepared Dive API request object
 * compatible with the specified API version and extended with custom payload fields
 */
export declare const prepareRequestDataForDiveApi: <P extends IRequestPayload>({ data, versionAPI, payload, }: IPrepareRequestDataForDiveApiParams<P>) => Promise<(IRequestV3 | IRequestV4) & P>;
export {};
