import * as react_jsx_runtime from 'react/jsx-runtime';
import { buildMenuViewModel, buildLogoViewModel } from '@riverbankcms/site-renderer';
import { S as SiteResponse, R as RiverbankClient } from './types-CAnC529E.js';

type HeaderData = {
    menu: ReturnType<typeof buildMenuViewModel>;
    logo: ReturnType<typeof buildLogoViewModel>;
    site: SiteResponse['site'];
    theme: SiteResponse['theme'];
    routes: SiteResponse['routes'];
};
type LayoutProps = {
    siteData?: SiteResponse;
    client?: RiverbankClient;
    siteId?: string;
    slug?: string;
    domain?: string;
    children: React.ReactNode;
    header?: boolean | ((data: HeaderData) => React.ReactNode);
    footer?: boolean;
    headerVariant?: 'classic' | 'centered' | 'transparent' | 'floating' | 'editorial';
};
/**
 * Layout component that wraps content with site header and footer.
 *
 * @example With pre-fetched site data (recommended)
 * ```tsx
 * const site = await client.getSite({ slug: 'my-site' });
 *
 * <Layout siteData={site}>
 *   <Page {...pageData} />
 * </Layout>
 * ```
 *
 * @example With automatic fetching
 * ```tsx
 * <Layout client={client} slug="my-site">
 *   <Page {...pageData} />
 * </Layout>
 * ```
 */
declare function Layout({ siteData: providedSiteData, client, siteId, slug, domain, children, header, footer, headerVariant, }: LayoutProps): Promise<react_jsx_runtime.JSX.Element>;

export { type HeaderData as H, Layout as L, type LayoutProps as a };
