import * as React from 'react';
import { BlockNode } from '../../../data';
import { BlockEditorValue } from '../BlockEditorProps';
import { BlockEditorControlUIProps, BlockEditorControlDefaultUI } from './BlockEditorControlDefaultUI';
export interface BlockEditorControlProps {
    value: BlockEditorValue;
    onChange: (value: BlockEditorValue) => any;
    controlUiProps?: Partial<BlockEditorControlUIProps>;
    UiComponent: React.SFC<BlockEditorControlUIProps> | React.ComponentClass<BlockEditorControlUIProps>;
}
export declare class BlockEditorControl extends React.Component<BlockEditorControlProps> {
    static defaultProps: {
        UiComponent: typeof BlockEditorControlDefaultUI;
    };
    addRow: (props?: Partial<BlockNode> | undefined) => void;
    addCol: (props?: Partial<BlockNode> | undefined) => void;
    addMarkDown: (props?: Partial<BlockNode> | undefined) => void;
    addImage: (props?: Partial<BlockNode> | undefined) => void;
    addLayer: (props?: Partial<BlockNode> | undefined) => void;
    removeFocused: () => void;
    focusNode: (node: BlockNode, focus?: boolean) => void;
    create: (props: Partial<BlockNode>) => void;
    updateBlock: (nodeId: string, propsToUpdate: Partial<BlockNode>) => void;
    destroy: (nodeId: string) => void;
    move: (nodeId: string, targetParentId: string, opts?: {
        beforeItemId?: string | undefined;
        afterItemId?: string | undefined;
        isPlaceHolder?: boolean | undefined;
        absolutePos?: {
            left: number;
            top: number;
        } | undefined;
    }) => void;
    moveInDirection: (nodeId: string, direction: "left" | "right" | "up" | "down") => void;
    copyFocused: () => void;
    paste: () => void;
    undo: () => void;
    redo: () => void;
    render(): JSX.Element;
}
