import type { Profile, SizingResult, ProfileMeasurements } from "./types"; export declare function setCachedMediaPipe(landmarks: any): void; export interface RecommendForProductInput { productId: string; productTitle: string; productImage?: string; productCategory?: string; productSubcategory?: string; productFitType?: string; productType?: string; productTags?: string[] | string; productDescription?: string; /** Raw size guide data — pass the same value you'd pass to */ sizeGuideData?: unknown; /** Optional explicit profile (otherwise uses the active profile from localStorage) */ profile?: Profile | null; /** Optional API URL override (otherwise reads NEXT_PUBLIC_PRIMESTYLE_API_URL) */ apiUrl?: string; /** Optional API key override (otherwise reads NEXT_PUBLIC_PRIMESTYLE_API_KEY) */ apiKey?: string; /** Skip the localStorage cache (forces a fresh /sizing/recommend call) */ skipCache?: boolean; } export interface RecommendForProductResult { /** The suggested size (e.g. "M", "42") */ recommendedSize: string; /** "high" | "medium" | "low" */ confidence?: string; /** For multi-section products: section name → suggested size */ sections?: Record; /** The profile this recommendation was computed against */ profileId: string; /** Whether this came from the in-memory cache (no network call) */ fromCache: boolean; /** Full sizing result for downstream use */ raw?: SizingResult; /** True when the backend found a real fit. False when the user's body is * outside every row in the size chart — hosts should suppress their * "Suggested: X" badge and surface a "size unavailable" message. */ found?: boolean; } /** * Headless auto-sizing — given a product and an active profile, returns the * suggested size WITHOUT opening the SDK modal. Caches results per * (profile, product) so repeat visits are instant. * * Returns null if there is no active profile yet — the host page should * fall back to its existing "Find Your Size" CTA which opens the modal. */ export declare function recommendForProduct(input: RecommendForProductInput): Promise; /** * Convenience: estimate full body measurements via /sizing/estimate so they * can be persisted to a profile. Used internally when the user finishes the * body profile flow — gives us measurements for ANY future product. */ export declare function estimateFullMeasurements(args: { apiUrl?: string; apiKey?: string; height?: number; weight?: number; heightUnit: "cm" | "in" | "ft"; weightUnit: "kg" | "lbs"; gender: "male" | "female"; age?: number; chestProfile?: string; midsectionProfile?: string; hipProfile?: string; bandSize?: string; cupSize?: string; braSizeRegion?: string; braRegion?: string; bodyImage?: string; bodyLandmarks?: Record | null; }): Promise<{ estimates: ProfileMeasurements; unit: "cm" | "in"; userEstimates?: { height?: number; weight?: number; age?: number; }; } | null>;