/** * useProducts Hook — shared across all product app shells. * * Fetches platform products from the tenant service via the global gateway. * Falls back to the built-in product catalog when the API is unavailable. * * @module @burdenoff/fe-libs/shared/hooks/shell/useProducts */ /** * Reject API appUrls that are clearly not production-safe: non-https schemes, * localhost/loopback addresses, or empty values. The static catalog URL is * authoritative for the switcher, so a bad API value falls back instead of * shipping a broken link (BOFF-5485). */ export declare function isTrustedAppUrl(url: string | null | undefined): url is string; export interface Product { id: string; name: string; url: string; icon: string; color: string; /** Real product logo (the app's `/icons/icon.svg`), used by the switcher. */ logoUrl?: string; /** When true, render as disabled with a "Coming soon" badge (non-GA product). */ comingSoon?: boolean; } export interface UseProductsReturn { products: Product[]; isLoading: boolean; error: string | null; refetch: () => void; } export interface UseProductsOptions { autoFetch?: boolean; } /** * Fetches platform products from the tenant service. * Falls back to the built-in product catalog when the API is unavailable. */ export declare function useProducts(options?: UseProductsOptions): UseProductsReturn; //# sourceMappingURL=useProducts.d.ts.map