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 <PrimeStyleTryon sizeGuideData={...}/> */
    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<string, string>;
    /** 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<RecommendForProductResult | null>;
/**
 * 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;
    bodyImage?: string;
    bodyLandmarks?: Record<string, {
        x: number;
        y: number;
    }> | null;
}): Promise<{
    estimates: ProfileMeasurements;
    unit: "cm" | "in";
    userEstimates?: {
        height?: number;
        weight?: number;
        age?: number;
    };
} | null>;
