import * as React from 'react';
import type { EntrySubrouteContextData, MediaAssetIndexItem, OccurrenceContextData, PageOutline, ResolveImageUrlContextInput, RouteMap, Theme, ThemeTokens } from '../contracts';
import type { SdkCustomBlock } from '../config/types';
import type { BlockOverrides } from './overrides';
export type ComponentRegistry = Record<string, React.ElementType>;
export type PageRendererDataContext = {
    siteId?: string;
    pageId?: string;
    resolvedData?: Record<string, Record<string, unknown>>;
    previewStage?: 'published' | 'preview';
    routes?: RouteMap;
    pagesByIdentifier?: Record<string, string>;
    entriesByIdentifier?: Record<string, Record<string, string>>;
    occurrenceContext?: OccurrenceContextData | null;
    entrySubrouteContext?: EntrySubrouteContextData | null;
    contentEntry?: Record<string, unknown> | null;
    editableRouteMetadataFieldIds?: ReadonlyArray<string> | null;
    supabaseUrl?: string;
    mediaAssets?: readonly MediaAssetIndexItem[];
    imageResolveContext?: ResolveImageUrlContextInput;
    apiBaseUrl?: string;
    portalToken?: string | null;
};
export type SdkConfigForRenderer = {
    customBlocks?: SdkCustomBlock[];
};
export type PageRendererProps = {
    theme: Theme;
    page: PageOutline | null;
    usePlaceholders?: boolean;
    dataContext?: PageRendererDataContext;
    routeMap?: RouteMap;
    wrapBlock?: (blockId: string, rendered: React.ReactNode) => React.ReactNode;
    registry?: ComponentRegistry;
    themeTokens?: ThemeTokens;
    blockOverrides?: BlockOverrides;
    sdkConfig?: SdkConfigForRenderer | null;
    customBlocks?: SdkCustomBlock[];
};
export declare function PageRenderer(props: PageRendererProps): React.ReactElement;
