import type { PageOutline } from '@riverbankcms/blocks';
import type { EditorBlockId } from '@riverbankcms/core';
import type { BlockItem } from '@riverbankcms/editor-blocks';
export type BlockWithContent = {
    [key: string]: unknown;
    id: string | null;
    kind: string;
    purpose: string;
    content?: Record<string, unknown>;
    draftContent?: Record<string, unknown> | null;
    publishedContent?: Record<string, unknown> | null;
    bindings?: Record<string, unknown>;
};
export type DraftSnapshot = {
    id: EditorBlockId;
    baseline: Record<string, unknown> | null;
    current: Record<string, unknown> | null;
};
export type EnrichedBlock = {
    id: string | null;
    kind: string;
    purpose: string;
    orderIndex: number;
    content: Record<string, unknown> | null;
    draftContent: Record<string, unknown> | null;
    publishedContent: Record<string, unknown> | 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;
            }>;
        };
    };
};
export type ComposePageArgs = {
    page: PageOutline | null;
    blockItems: BlockItem[];
    uiStore: EditorDraftInspectorStore;
};
