/**
 * Block component for rendering individual CMS blocks
 *
 * Renders a single block with its content and data.
 */
import * as React from 'react';
import type { Theme, ThemeTokens } from '../../contracts';
import type { RiverbankClient } from '../../client/types';
import type { BlockKind } from '../../types';
/**
 * Override component for custom block rendering.
 * Receives the same props as default block components.
 */
export type BlockOverrideComponent = React.ComponentType<{
    content: Record<string, unknown>;
    theme?: ThemeTokens;
    themeConfig?: Theme;
    data?: Record<string, unknown>;
    blockId?: string | null;
    blockKind?: BlockKind;
}>;
export type BlockProps = {
    blockKind: BlockKind;
    blockId?: string | null;
    content: Record<string, unknown>;
    theme: Theme;
    siteId: string;
    pageId?: string;
    previewStage?: 'published' | 'preview';
    client?: RiverbankClient;
    usePlaceholders?: boolean;
    /**
     * Custom component to override default block rendering.
     * When provided, renders this component instead of the manifest-based default.
     * This is SSR-safe - no context or hooks required.
     *
     * @example
     * ```tsx
     * <Block
     *   blockKind="block.hero"
     *   content={heroContent}
     *   theme={theme}
     *   siteId={siteId}
     *   override={MyCustomHero}
     * />
     * ```
     */
    override?: BlockOverrideComponent;
};
/**
 * Renders a single CMS block with optional data loading.
 *
 * Use this component when you want to render individual blocks outside of a full page context,
 * or when mixing CMS blocks with custom JSX.
 *
 * @example Basic usage
 * ```tsx
 * <Block
 *   blockKind="block.hero"
 *   content={{ headline: 'Welcome', subheadline: 'To our site' }}
 *   theme={theme}
 *   siteId="site-123"
 * />
 * ```
 *
 * @example With data loading
 * ```tsx
 * <Block
 *   blockKind="block.blog-listing"
 *   blockId="block-456"
 *   content={blockContent}
 *   theme={theme}
 *   siteId="site-123"
 *   pageId="page-789"
 *   client={client}
 * />
 * ```
 */
export declare function Block({ blockKind, blockId, content, theme, siteId, pageId, previewStage, client, usePlaceholders: _usePlaceholders, override: OverrideComponent, }: BlockProps): Promise<import("react/jsx-runtime").JSX.Element>;
