import { type UseQueryResult } from "@tanstack/react-query";
import type { AppDefinitionApi } from "@fluid-app/portal-core/app-definition-api";
import type { RawManifestResponse } from "../transforms";
import type { RepAppData } from "@fluid-app/portal-core/types";
/**
 * Base query key for full app data (rendered manifest endpoint).
 * Kept for backwards compatibility — the runtime key used by the hook
 * includes a company prefix via {@link useCompanyScopedQueryKey}.
 */
export declare const APP_DATA_QUERY_KEY: readonly ["fluid", "app"];
/**
 * Fetch the raw rendered manifest via the portal-tenant BFF adapter.
 * Shared by `useFluidApp` and `useFluidProfile` to avoid drift.
 */
export declare function fetchRawManifest(api: AppDefinitionApi): Promise<RawManifestResponse>;
/**
 * Hook to fetch the full portal app data from the rendered-manifest endpoint.
 *
 * Returns a `RepAppData` object containing:
 * - `screens` — all screen definitions with normalized component trees
 * - `profile.themes` — fully-transformed ThemeDefinition[] (handles legacy + new formats)
 * - `profile.activeThemeId` — the currently active theme ID
 * - `profile.navigation.navigation_items` — sorted, recursive navigation tree
 *
 * Uses IndexedDB persistence so subsequent page loads hydrate instantly
 * from cache while revalidating in the background. The raw API response
 * (plain JSON) is cached; Color objects are recreated from cache via
 * `select` on every restore — this is fast (CPU only, no network).
 *
 * @example
 * ```tsx
 * function App() {
 *   const { data: appData, isLoading } = useFluidApp();
 *
 *   if (isLoading) return <Spinner />;
 *
 *   return (
 *     <AppShell
 *       appData={appData}
 *       navigation={appData.profile.navigation.navigation_items}
 *     />
 *   );
 * }
 * ```
 */
export declare function useFluidApp(options?: {
    enabled?: boolean;
}): UseQueryResult<RepAppData>;
//# sourceMappingURL=use-fluid-app.d.ts.map