import { type ReactNode, type ComponentType } from "react";
import type { RepAppData } from "@fluid-app/portal-core/types";
import type { NavigationItem } from "../types/navigation";
import type { PortalErrorReporter } from "../errors/portal-error-reporter";
export interface AppShellProps {
    /** Pre-fetched app data (skips internal useFluidApp call if provided) */
    appData?: RepAppData;
    /** Override navigation items (otherwise derived from appData/API) */
    navigation?: NavigationItem[];
    /** Custom page components keyed by slug */
    customPages?: Record<string, ComponentType<{
        slug?: string;
        params?: string;
    }>>;
    /** Base path for subpath deployments (e.g. "/portal"). Default: "/" */
    basePath?: string;
    /** Controlled current slug */
    currentSlug?: string;
    /** Navigation callback */
    onNavigate?: (slug: string) => void;
    /** Custom sidebar header slot */
    sidebarHeader?: ReactNode;
    /** Custom sidebar footer slot. When provided, replaces the default logout button. */
    sidebarFooter?: ReactNode;
    /**
     * Callback invoked after the user logs out and all client state has been cleared.
     * If not provided, a default logout button is still rendered, but no post-logout
     * action is taken (consumers should pair this with `logoutRedirectUrl`
     * or provide their own `sidebarFooter`).
     */
    onLogout?: () => void;
    /** URL to redirect to after logout (e.g. "/login"). Takes precedence over `onLogout`. */
    logoutRedirectUrl?: string;
    /** Optional reporter for screen-level crashes. Falls back to console logging when omitted. */
    errorReporter?: PortalErrorReporter;
    /** Render prop or static children for the content area */
    children?: ReactNode | ((props: {
        currentSlug: string;
        currentNavItem: NavigationItem | undefined;
    }) => ReactNode);
}
export declare function AppShell({ appData: appDataProp, navigation: navigationProp, customPages, basePath, currentSlug: controlledSlug, onNavigate: onNavigateProp, sidebarHeader, sidebarFooter, onLogout, logoutRedirectUrl, errorReporter, children }: AppShellProps): React.JSX.Element;
//# sourceMappingURL=AppShell.d.ts.map