import { type ComponentProps, type ReactNode } from "react";
import { BlockApiProvider } from "@riverbankcms/blocks/client";
import type { ButtonPersonalityId } from "@riverbankcms/theme-core/buttons";
import type { PaletteOverrides, PaletteVariantId } from "@riverbankcms/theme-core/palette";
import type { EntrySubrouteContextData, MediaAssetIndexItem, Theme } from "@riverbankcms/blocks";
import type { ContentTypeSchema } from "@riverbankcms/content-model";
import type { SdkConfigForBlockPicker } from "@riverbankcms/editor-blocks";
import type { SurfaceId } from "@riverbankcms/surfaces";
import { type PreviewBlock, type PreviewContentEntryData, type PreviewPageMetadata } from "./PreviewEntryControllerProvider";
import type { PreviewEditorSidebarProps, PreviewTemplateData } from "./PreviewEditorSidebar";
import { type PreviewRuntimeSession } from "../../auth-contract";
type BaseFetch = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
export type PreviewDesignEditorEligibility = Readonly<{
    kind: "managed-page";
}> | Readonly<{
    kind: "content-entry";
}> | Readonly<{
    kind: "sdk-page";
}> | Readonly<{
    kind: "unsupported";
}>;
export type PreviewShellProps = {
    children: ReactNode;
    apiBaseUrl: string;
    blockApiConfig: ComponentProps<typeof BlockApiProvider>["config"];
    siteId: string;
    siteSlug: string;
    editableId: string | null;
    previewSession: PreviewRuntimeSession | null;
    previewToken: string;
    dashboardBaseUrl?: string | null;
    surfaceId: SurfaceId;
    theme: Theme;
    themeId?: string | null;
    themeSelectionId?: string | null;
    /**
     * Persisted Style configurator selections (Phase C). Forwarded into the
     * StyleConfigurator so reload renders the user's saved button personality
     * + palette variant + sparse overrides instead of falling back to the
     * site style defaults.
     */
    themeSelectionButtonPersonalityId?: ButtonPersonalityId | null;
    themeSelectionPaletteVariantId?: PaletteVariantId | null;
    themeSelectionPaletteOverrides?: PaletteOverrides | null;
    pageId: string | null;
    routeId: string | null;
    entryData?: PreviewContentEntryData | null;
    contentTypeSchema?: ContentTypeSchema | null;
    referenceContentTypeKeys?: readonly string[];
    draftContent?: Record<string, unknown> | null;
    currentTemplate?: PreviewTemplateData | null;
    initialStatus?: "draft" | "scheduled" | "published";
    initialBlocks?: PreviewBlock[];
    pageMetadata?: PreviewPageMetadata;
    isSiteLaunched: boolean;
    maintenanceModeEnabled: boolean;
    entrySubrouteContext?: EntrySubrouteContextData | null;
    assistantPanel?: PreviewEditorSidebarProps["assistantPanel"];
    sdkConfig?: SdkConfigForBlockPicker | null;
    mediaAssets?: MediaAssetIndexItem[];
    supabaseUrl?: string;
    useThemeScope?: boolean;
    designEditorEligibility?: PreviewDesignEditorEligibility;
    baseFetch?: BaseFetch;
};
export declare function PreviewShell({ children, apiBaseUrl, blockApiConfig, siteId, siteSlug, editableId, previewSession, previewToken, dashboardBaseUrl, surfaceId, theme, themeId, themeSelectionId, themeSelectionButtonPersonalityId, themeSelectionPaletteVariantId, themeSelectionPaletteOverrides, pageId, routeId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, initialStatus, initialBlocks, pageMetadata, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, supabaseUrl, useThemeScope, designEditorEligibility, baseFetch, }: PreviewShellProps): import("react/jsx-runtime").JSX.Element;
export declare function defaultDesignEditorEligibility(input: Readonly<{
    pageId: string | null;
    entryData?: PreviewContentEntryData | null;
}>): PreviewDesignEditorEligibility;
export {};
