import type { PageOutline } from '../../../../../blocks/src/index';
import type { EditorBlockId } from '../../../../../core/src/index';
import type { BlockItem } from '../../../../../editor-blocks/src/index';
import type { CanonicalBlockContent, PreviewProjection, PreviewRenderContent } from '../previewProjection';
export type BlockWithContent = {
    [key: string]: unknown;
    id: string | null;
    kind: string;
    purpose: string;
    content?: PreviewRenderContent;
    draftContent?: PreviewRenderContent | null;
    publishedContent?: PreviewRenderContent | null;
    bindings?: Record<string, unknown>;
};
export type DraftSnapshot = {
    id: EditorBlockId;
    baseline: CanonicalBlockContent | null;
    current: CanonicalBlockContent | null;
};
export type EnrichedBlock = {
    id: string | null;
    kind: string;
    purpose: string;
    orderIndex: number;
    content: PreviewRenderContent | null;
    draftContent: PreviewRenderContent | null;
    publishedContent: PreviewRenderContent | null;
    bindings: Record<string, unknown> | null;
};
export type CachedBlockTransform = {
    src: EnrichedBlock;
    out: BlockWithContent;
};
export type EditorDraftInspectorStore = {
    getState: () => {
        drafts: {
            inspect: () => DraftSnapshot[];
        };
        aiOverlays?: {
            viewMode: 'before' | 'after';
            overrides: Map<string, {
                proposalId: string;
                before: unknown;
                after: unknown;
            }>;
            structure?: {
                proposalId: string;
                includeUnspecified?: boolean;
                before: {
                    blockIds: string[];
                };
                after: {
                    blockIds: string[];
                    addedBlocks?: Array<{
                        id: string;
                        kind: string;
                        content?: Record<string, unknown> | null;
                    }>;
                };
            } | null;
        };
    };
};
export type ComposePageArgs = {
    page: PageOutline | null;
    blockItems: BlockItem[];
    uiStore: EditorDraftInspectorStore;
    projections?: readonly PreviewProjection[];
};
export type ComposePreviewRenderPageArgs = {
    page: PageOutline | null;
    blockItems: BlockItem[];
    draftSnapshots: readonly DraftSnapshot[];
    projections: readonly PreviewProjection[];
};
