import type { TranslateFn } from "../../i18n"; import type { Profile, ProfileCompletionDraft } from "../types"; /** * Multi-step profile creation wizard. * * NEW FLOW (Apr 2026): * * 1. Method picker — user chooses between: * a) "Measure manually" — enter height, weight, and answer body * shape questions one at a time with fade transitions. * b) "Analyze by photo" — pick a profile name, upload a full-body * photo, and let the SDK estimate every measurement (waist, hip, * sleeve, inseam, chest, etc.) via vision. * * 2a. MANUAL PATH * Step "identity" — name + gender + units + height + weight + age * Step "chest" (men) — single ShapeCard row, fade transition * Step "stomach" — single ShapeCard row, fade transition * Step "seat" — single ShapeCard row, fade transition * Step "hips" (women) — single ShapeCard row, fade transition * Step "bra" (women) — band + cup pickers * → Save → parent persists + runs estimateFullMeasurements * * 2b. IMAGE PATH * Step "name" — profile name + gender (no measurements needed) * Step "photo" — full-screen photo upload (same UI as the SDK's * "Find size by photo" mode) * → Save with photoBase64 → parent's onSaveNewProfile already calls * estimateFullMeasurements({bodyImage}) which kicks off the * vision pipeline and stores all body measurements on the profile. * * Body shape questions are rendered inside `ProgressiveStep`, which keys * the children on the active step name so changing step triggers a CSS * fade-in animation. */ interface CreateProfileWizardProps { onSave: (data: Omit) => void | Promise; onCancel: () => void; initialMode?: "manual" | "image"; initialDraft?: ProfileCompletionDraft | null; /** Direct profile-save path launched from a size result. Keeps the shell back button and skips wizard chrome. */ directAnalysisFlow?: boolean; /** Backend URL + API key — required for the pre-upload age check call. */ apiUrl?: string; apiKey?: string; /** Called when a photo is selected (passes base64) or removed (passes null). * Host can use this to mirror the photo in the product-image left panel. */ onPhotoPreview?: (base64: string | null) => void; /** Called during image path to estimate body measurements from photo + height/weight. * Returns estimates that get saved to the profile. Wizard shows a calculating * animation while this runs. */ onEstimate?: (data: { photoBase64: string; height: number; weight: number; heightUnit: "cm" | "in"; weightUnit: "kg" | "lbs"; gender: "male" | "female"; age?: number; bandSize?: string; cupSize?: string; braSizeRegion?: string; bodyLandmarks?: Record | null; }) => Promise<{ estimates: Record; unit: string; } | null>; t: TranslateFn; } export declare function CreateProfileWizard({ onSave, onCancel, initialMode, initialDraft, directAnalysisFlow, apiUrl, apiKey, onPhotoPreview, onEstimate, t }: CreateProfileWizardProps): import("react/jsx-runtime").JSX.Element; export {};