import { type ReactNode } from 'react';
import { type StoreApi } from './utils/useStoreSelector';
import { type ApiClient } from '@riverbankcms/api/request';
import { type Theme } from '@riverbankcms/blocks';
import type { PageDesignEditorReadModel } from '@riverbankcms/theme-core/site-styles';
import { type EditorStructuralCommand } from '@riverbankcms/core';
import { type SdkConfigForBlockPicker } from './block-editor/sdkBlockMerger';
import { type ReorderControlMode } from './block-editor/reorderControlMode';
import type { ArrayKeysManager, BlockEditorHandle, BlockItem, BlockFocusRequest, UiSlice, DraftsSlice } from './block-editor/types';
import type { BlockDraftSaveability, FieldWidgetComponent } from '@riverbankcms/block-form/client';
type UiState = {
    focusRequest: BlockFocusRequest | null;
    activeBlockId: UiSlice['activeBlockId'];
    requestFocus: UiSlice['requestFocus'];
    clearFocus: () => void;
    setActiveBlockId: UiSlice['setActiveBlockId'];
    setActivePreviewField: UiSlice['setActivePreviewField'];
    arrayKeys: ArrayKeysManager;
    blockValidation: {
        markPathEdited: (blockId: Parameters<DraftsSlice['setAtPath']>[0], path: string) => void;
        isPathEdited: (blockId: Parameters<DraftsSlice['setAtPath']>[0], path: string) => boolean;
        showAllValidation: (blockId: Parameters<DraftsSlice['setAtPath']>[0]) => boolean;
        getBlockSaveability: (blockId: Parameters<DraftsSlice['setAtPath']>[0]) => BlockDraftSaveability;
    };
    structure: {
        getList: () => readonly BlockItem[];
    };
    history: {
        applyCommand?: (command: EditorStructuralCommand) => void;
    };
    drafts: DraftsSlice & {
        setFailed?: (blockId: Parameters<DraftsSlice['autosaveFailed']>[0], message?: string) => void;
    };
};
export type BlockEditorProps = {
    siteId: string;
    pageId: string;
    blocks: BlockItem[];
    recoveryConflictBlockIds?: readonly string[];
    recoveryConflictReviewRequestId?: number | null;
    uiStore: StoreApi<UiState>;
    apiClient: ApiClient;
    enableReordering?: boolean;
    enableCreation?: boolean;
    onBlockSave?: (blockId: string, content: Record<string, unknown>) => void;
    onBlocksChange?: (blocks: BlockItem[]) => void;
    theme?: Theme | null;
    widgetOverrides?: Record<string, FieldWidgetComponent>;
    headerLeftSlot?: ReactNode;
    hideThemeV2RawStyleFields?: boolean;
    pageDesignEditorModel?: PageDesignEditorReadModel | null;
    enabledContentTypes?: string[];
    sdkConfig?: SdkConfigForBlockPicker | null;
    reorderControlMode?: ReorderControlMode;
};
export declare const BlockEditor: import("react").ForwardRefExoticComponent<BlockEditorProps & import("react").RefAttributes<BlockEditorHandle>>;
export {};
