import { ReactNode } from 'react';
import { DotCMSBasicContentlet, DotCMSPageAsset, DotCMSPageRendererMode } from '@dotcms/types';
export interface DotCMSLayoutBodyProps<TContentlet extends DotCMSBasicContentlet = DotCMSBasicContentlet> {
    page: DotCMSPageAsset;
    components: {
        [key: string]: React.ComponentType<TContentlet> | React.ComponentType<any>;
    };
    mode?: DotCMSPageRendererMode;
    /**
     * Pre-rendered server component nodes keyed by contentlet identifier.
     * Use this to render Next.js async server components within the layout.
     * Build this map using the `buildSlots` helper.
     *
     * @example
     * ```tsx
     * import { buildSlots } from '@dotcms/react';
     *
     * const slots = buildSlots(pageContent.pageAsset.containers, {
     *   BlogList: BlogListContainer,
     * });
     *
     * <DotCMSLayoutBody page={pageAsset} components={pageComponents} slots={slots} />
     * ```
     */
    slots?: Record<string, ReactNode>;
}
/**
 * DotCMSLayoutBody component renders the layout body for a DotCMS page.
 *
 * It utilizes the dotCMS page asset's layout body to render the page body.
 * If the layout body does not exist, it renders an error message in the mode is `development`.
 *
 * @public
 * @component
 * @param {Object} props - Component properties.
 * @param {DotCMSPageAsset} props.page - The DotCMS page asset containing the layout information.
 * @param {Record<string, React.ComponentType<DotCMSContentlet>>} [props.components] - mapping of custom components for content rendering.
 * @param {DotCMSPageRendererMode} [props.mode='production'] - The renderer mode; defaults to 'production'. Alternate modes might trigger different behaviors.
 * @param {Record<string, ReactNode>} [props.slots] - Pre-rendered server component nodes keyed by contentlet identifier.
 *
 * @returns {JSX.Element} The rendered DotCMS page body or an error message if the layout body is missing.
 *
 */
export declare const DotCMSLayoutBody: ({ page, components, mode, slots }: DotCMSLayoutBodyProps) => import("react/jsx-runtime").JSX.Element;
