import { type ComponentProps, type ReactNode } from "react";
import { BlockApiProvider } from "../../../../blocks/src/client";
import type { ButtonPersonalityId } from "../../../../theme-core/src/buttons/index";
import type { PaletteOverrides, PaletteVariantId } from "../../../../theme-core/src/palette/index";
import type { FooterSelectionContext, FooterLookId, HeaderSelectionContext, HeaderLookId } from "../../../../theme-core/src/site-styles/index";
import type { EntrySubrouteContextData, MediaAssetIndexItem, Theme } from "../../../../blocks/src/index";
import type { ContentTypeSchema } from "../../../../content-model/src/index";
import type { SdkConfigForBlockPicker } from "../../../../editor-blocks/src/index";
import type { SurfaceId } from "../../../../surfaces/src/index";
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;
    themeSelectionVersion?: number | null;
    themeSelectionUpdatedAt?: string | null;
    /**
     * Persisted Style configurator selections. Forwarded into StyleConfigurator
     * so reload renders the user's saved button personality, palette variant,
     * and sparse overrides instead of falling back to the site style defaults.
     */
    themeSelectionButtonPersonalityId?: ButtonPersonalityId | null;
    themeSelectionPaletteVariantId?: PaletteVariantId | null;
    themeSelectionPaletteOverrides?: PaletteOverrides | null;
    themeSelectionHeaderLookId?: HeaderLookId | null;
    themeSelectionFooterLookId?: FooterLookId | null;
    themeSelectionHeaderContext?: Partial<HeaderSelectionContext>;
    themeSelectionFooterContext?: Partial<FooterSelectionContext>;
    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, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonPersonalityId, themeSelectionPaletteVariantId, themeSelectionPaletteOverrides, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, themeSelectionFooterContext, 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 {};
