import type { TranslateFn } from "../../i18n"; import { type StyleMatchRequestProduct, type StyleMatchSelection } from "../../api-client"; import type { ChestProfile, MidsectionProfile, HipProfile, PrimeStyleOutfitLook } from "../types"; interface BodyProfileViewProps { productImage: string; productImages?: string[]; productCarouselItems?: Array<{ image: string; title?: string; href?: string; }>; styleMatchProduct?: StyleMatchRequestProduct; outfitBuilderSource?: "sdk" | "ai-stylist"; instantOutfitLooks?: PrimeStyleOutfitLook[]; currentRecommendedSize?: string | null; productTitle: string; isWomen: boolean; basicOnly?: boolean; /** Optional entry step for recovery flows, such as falling back from an error to manual measurements. */ initialStep?: "photo" | "basics"; /** Use the default upload screen with only height/weight questions. */ simplePhotoOnly?: boolean; /** Compact desktop treatment for accessory flows that only need height/weight. */ simpleAccessoryLayout?: boolean; simpleQuestionMode?: "heightWeight" | "shoeReference"; formRef: React.MutableRefObject>; sizingCountry: string; heightUnit: string; setHeightUnit: (u: string) => void; weightUnit: string; setWeightUnit: (u: string) => void; sizingUnit?: string; setSizingUnit?: (u: string) => void; /** Backend URL + API key — required for the pre-upload age check call. */ apiUrl?: string; apiKey?: string; onComplete: (data: { height: number; weight: number; heightUnit: string; weightUnit: string; gender: string; age?: number; chestProfile?: ChestProfile; midsectionProfile?: MidsectionProfile; hipProfile?: HipProfile; bodyImage?: string; bandSize?: string; cupSize?: string; braSizeRegion?: string; }) => void; onSnapSubmit: (data: { photoFile: File; photoBase64: string; height: number; weight: number; heightUnit: string; weightUnit: string; sizingUnit?: string; gender: string; age?: number; bandSize?: string; cupSize?: string; braSizeRegion?: string; braSize?: { band: number; cup: string; region: string; }; chestProfile?: ChestProfile; midsectionProfile?: MidsectionProfile; hipProfile?: HipProfile; extraMeasurements?: Record; styleMatchSelections?: StyleMatchSelection[]; }) => void; /** True if the user has an active profile with stored measurements — * changes the basics step Next button to "Find My Best Fit" */ hasActiveProfileWithMeasurements?: boolean; /** Fast-path callback: skip the rest of the wizard and run /sizing/recommend * with the active profile's stored measurements directly. */ onUseActiveProfile?: (styleMatchSelections?: StyleMatchSelection[], requestedSizingUnit?: "cm" | "in") => void; /** Display name of the currently active profile (for the "Profile X loaded" * banner shown on the basics step). */ activeProfileName?: string | null; /** Deselect the active profile so the user can run a fresh AI sizing flow * with full body-shape questions. */ onStartFresh?: () => void; /** Active profile — when set, its height/weight/age/gender seed the basics * inputs so the SDK opens with the user's saved values, not the defaults. */ activeProfile?: import("../types").Profile | null; onBack: () => void; t: TranslateFn; } export declare function BodyProfileView({ productImage, productImages, productCarouselItems, styleMatchProduct, outfitBuilderSource, instantOutfitLooks, currentRecommendedSize, productTitle, isWomen, basicOnly, initialStep, simplePhotoOnly, simpleAccessoryLayout, simpleQuestionMode, formRef, sizingCountry, heightUnit, setHeightUnit, weightUnit, setWeightUnit, sizingUnit, setSizingUnit, apiUrl, apiKey, onComplete, onSnapSubmit, hasActiveProfileWithMeasurements, onUseActiveProfile, activeProfileName, onStartFresh, activeProfile, onBack, t, }: BodyProfileViewProps): import("react/jsx-runtime").JSX.Element; export {};