/**
 * Shopify cart attribution hook.
 *
 * Intercepts the storefront's Ajax cart-add API (`/cart/add.js`,
 * `/cart/add`) and stamps every request with
 * `attributes[ps_session]: <sessionId>`. Shopify exposes cart
 * attributes as order note attributes, so when the
 * `orders/create` webhook fires we can match the purchase back to the
 * customer's try-on session on our backend.
 *
 * Also posts a lightweight `ADD_TO_CART_FROM_TRYON` event to our App
 * Proxy `/events/cart-add` endpoint so the admin funnel shows the step
 * regardless of whether the customer finishes checkout.
 *
 * No merchant integration required — dropping the storefront bundle
 * auto-installs this hook.
 */
export declare function setLastCompletedProduct(productId: string | null, productTitle: string | null): void;
/**
 * Called by the React widget whenever the user actively picks a size in
 * the size-result view. The cart-hook then fires a SIZE_RECOMMENDATION_ACCEPTED
 * event when this product gets added to cart — a clearer "user committed"
 * signal than "user clicked a pill once".
 *
 * Side-effect: proactively stamp the current cart with `attributes[ps_session]`
 * via `/cart/update.js`. This is the primary attribution path now — works
 * regardless of how the buyer eventually checks out (Ajax cart, Buy It Now,
 * Shop Pay), because the attribute is already on the cart object before
 * the buyer adds anything. The legacy fetch/form-submit interception below
 * stays as a defense-in-depth fallback for older themes.
 */
export declare function setLastSizeSelection(input: {
    productId: string | null;
    productTitle: string | null;
    size: string | null;
    recommendedSize: string | null;
}): void;
/**
 * One-time install. Safe to call multiple times.
 */
export declare function installCartHook(): void;
