import { P as Product } from '../../app-store-B5t8W1GX.js';
import 'zustand/middleware';
import 'zustand';
import '../../product-framework/custom-product-defaults.js';

/**
 * Bidirectional sync between the active product (app store) and the URL.
 *
 *  - **URL → store** (this component): when the user lands on or follows a
 *    deep link to `/<other-root>/...` while the store says a different
 *    product, the store adopts the URL's product. URL is source of truth.
 *
 *  - **Store → URL** (`useProductSwitch` below, called from switcher click
 *    handlers): the store updates AND we hard-navigate to
 *    `/<root>/dashboard`. We do this in the click handler — not in an
 *    effect — to keep the click ↔ navigate causality explicit.
 *
 * Mount once inside `ProductProvider` and inside the router.
 */
declare function ProductRouteSync(): null;
/** Product-scoped dashboard href for breadcrumbs and shell links. */
declare function useProductDashboardHref(): string;
/** Organization / workspace settings (products, tenant branding) under the active product root. */
declare function useProductOrganizationSettingsHref(): string;
/**
 * Hook for product-switcher click handlers. Returns a callback that flips
 * the active product AND hard-navigates to `/<new-root>/dashboard`.
 *
 * The two operations happen in the same tick so the user sees one visual
 * change (theme + URL flip together), not a brief flash of the old product
 * on the new dashboard. `replace: false` so browser `Back` returns the user
 * to where they were in the previous product.
 */
declare function useProductSwitch(): (next: Product, customIndex?: number) => void;

export { ProductRouteSync, useProductDashboardHref, useProductOrganizationSettingsHref, useProductSwitch };
