import { Workspace, Block } from '@kano/kwc-blockly/blockly.js';
import { Editor } from '../../../editor/editor.js';
import { Engine } from '../../../challenge/engine.js';
declare class BlocklyChallenge extends Engine {
    workspace?: Workspace;
    protected eventsMap: {
        [K: string]: string;
    };
    developmentMode: boolean;
    constructor(editor: Editor);
    getWorkspace(): Workspace<Block>;
    _updateStep(): void;
    _wrongCategory(): void;
    _deleteNotExpected(validation: any, detail: any): void;
    _flyoutClosed(): void;
    _onPhantomBlockEnter(phantom_block: any): false | undefined;
    setPhantomBlockByPosition(): void;
    _onPhantomBlockLeave(): void;
    _getOpenFlyoutStep(data: any): {
        validation: {
            blockly: {
                'open-flyout': any;
            };
        };
    };
    _getCloseFlyoutStep(data: any): {
        validation: {
            blockly: {
                'close-flyout': any;
            };
        };
    };
    _getCreateBlockStep(data: any): {
        validation: {
            blockly: {
                create: {
                    type: string;
                    alias: any;
                };
            };
        };
    };
    _getConnectBlockStep(data: any): {
        validation: {
            blockly: {
                connect: {
                    parent: any;
                    target: string;
                };
            };
        };
        phantom_block: any;
    };
    _getDropBlockStep(data: any): {
        validation: {
            blockly: {
                drop: {
                    target: string;
                };
            };
        };
        phantom_block: any;
    };
    _startStepShorthand(data: any): any;
    _createBlockShorthand(data: any): any[];
    _changeInputShorthand(data: any): {
        validation: {
            blockly: {
                value: {
                    target: any;
                    value: any;
                    skipCheck: any;
                };
            };
        };
    };
    /**
     * Check if the event is about a specific toolbox entry
     * @param toolboxEntry An id for a toolbox entry
     * @param event An event from the Blockly workspace
     */
    _matchCategory(toolboxEntry: string, event: any): boolean;
    _matchBlockType(type: string, event: any): boolean;
    _matchDelete(validation: any, event: any): boolean;
    /**
     * Check whether the create event received matches the expected validation
     * @param validation A validation object defined in a challenge step
     * @param event An event from the Blockly workspace
     */
    _matchCreate(validation: any, event: any): boolean;
    /**
     * Check whether the connect event received matches the expected validation
     * @param validation A validation object defined in a challenge step
     * @param event An event from the Blockly workspace
     */
    _matchConnect(validation: any, event: any): boolean;
    /**
     * Check whether a block dropped on the workspace matches the expected block
     * @param validation A validation object defined in a challenge step
     * @param event An event from the Blockly workspace
     */
    _matchDrop(validation: any, event: any): boolean;
    /**
     * Check wether the value change event from blockly matches the validation
     * @param validation A validation object defined in a challenge step
     * @param event An event from the Blockly workspace
     */
    _matchBlocklyValue(validation: any, event: any): boolean;
    _validate(validation: any, e: any): boolean;
}
export default BlocklyChallenge;
