import React, { PureComponent } from 'react';
import { PrismaCmsContext } from '@prisma-cms/context';
import { EditorContextValue } from './context/EditorContext/interfaces';
import EditorComponent, { EditorComponentObject } from './EditorComponent';
import { FrontEditorProps, FrontEditorState } from './interfaces';
export * from './interfaces';
export * from './EditorComponent';
export * from './context';
export declare function registerComponents<T extends typeof EditorComponent>(_keys: T[]): (p: EditorComponentObject & {
    component: typeof _keys[number]['Name'];
    components: Array<typeof p>;
}) => EditorComponentObject;
export declare class FrontEditor<P extends FrontEditorProps = FrontEditorProps, S extends FrontEditorState = FrontEditorState> extends PureComponent<P, S> {
    context: PrismaCmsContext;
    static contextType: React.Context<PrismaCmsContext>;
    static defaultProps: Pick<FrontEditorProps, 'itemsOnly' | 'inEditMode' | 'Components' | 'className'>;
    /**
     * Этот массив используется для быстрого поиска всех отрендеренных компонентов
     */
    mountedComponents: EditorComponent[];
    actionPanel: HTMLDivElement | undefined;
    settingsViewContainer: HTMLDivElement | undefined;
    constructor(props: P);
    registerMountedComponent: (component: EditorComponent) => void;
    setActiveItem: (component: EditorContextValue['activeItem']) => void;
    getDragItem: () => S["dragItem"];
    getDragTarget: () => S["dragTarget"];
    getActiveItem: () => S["activeItem"];
    getHoveredItem: () => S["hoveredItem"];
    getSettingsViewContainer: () => HTMLDivElement | undefined;
    onDragStart: (_event: React.DragEvent, item: EditorComponentObject) => void;
    onDragEnd: () => void;
    setDragTarget: (component: EditorComponent) => void;
    setHoveredItem: (component: EditorComponent | null) => void;
    getActionPanel: () => HTMLDivElement | undefined;
    unregisterMountedComponent: (component: EditorComponent) => void;
    initContext(): EditorContextValue;
    updateContext(data: Partial<EditorContextValue>): void;
    /**
     * @deprecated
     */
    getContextValue(name: keyof S['editorContext']): S["editorContext"][keyof S["editorContext"]];
    /**
     * @deprecated use next/head instead
     */
    setPageMeta(_meta?: {}): void;
    componentDidUpdate(prevProps: P, prevState: S): void;
    prepareComponents(): P['Components'];
    settingsViewContainerRef: (el: HTMLDivElement) => void;
    renderPanels(): JSX.Element;
    renderItems(): JSX.Element | null;
    getComponents(): S["Components"];
    actionPanelRef: (el: HTMLDivElement) => void;
    onWindowClick: () => void;
    componentDidMount(): void;
    componentWillUnmount(): void;
    addEvents(): void;
    removeEvents(): void;
    stopPropagation: (event: React.MouseEvent<HTMLDivElement>) => void;
    render(): JSX.Element;
}
export default FrontEditor;
