import { Keys, KeyModifiers } from '../enum/enum';
import { ChildProperty } from '@syncfusion/ej2-base';
import { CommandModel, KeyGestureModel } from './keyboard-commands-model';
import { ContextMenuItemModel } from '../objects/interface/interfaces';
/**
 * Defines the combination of keys and modifier keys
 */
export declare class KeyGesture extends ChildProperty<KeyGesture> {
    /**
     * Sets the key value, on recognition of which the command will be executed.
     * * none - no key
     * * Number0 = The 0 key
     * * Number1 = The 1 key
     * * Number2 = The 2 key
     * * Number3 = The 3 key
     * * Number4 = The 4 key
     * * Number5 = The 5 key
     * * Number6 = The 6 key
     * * Number7 = The 7 key
     * * Number8 = The 8 key
     * * Number9 = The 9 key
     * * Number0 = The 0 key
     * * BackSpace = The BackSpace key
     * * F1 = The f1 key
     * * F2 = The f2 key
     * * F3 = The f3 key
     * * F4 = The f4 key
     * * F5 = The f5 key
     * * F6 = The f6 key
     * * F7 = The f7 key
     * * F8 = The f8 key
     * * F9 = The f9 key
     * * F10 = The f10 key
     * * F11 = The f11 key
     * * F12 = The f12 key
     * * A = The a key
     * * B = The b key
     * * C = The c key
     * * D = The d key
     * * E = The e key
     * * F = The f key
     * * G = The g key
     * * H = The h key
     * * I = The i key
     * * J = The j key
     * * K = The k key
     * * L = The l key
     * * M = The m key
     * * N = The n key
     * * O = The o key
     * * P = The p key
     * * Q = The q key
     * * R = The r key
     * * S = The s key
     * * T = The t key
     * * U = The u key
     * * V = The v key
     * * W = The w key
     * * X = The x key
     * * Y = The y key
     * * Z = The z key
     * * Left = The left key
     * * Right = The right key
     * * Top = The top key
     * * Bottom = The bottom key
     * * Escape = The Escape key
     * * Tab = The tab key
     * * Delete = The delete key
     * * Enter = The enter key
     * * The Space key
     * * The page up key
     * * The page down key
     * * The end key
     * * The home key
     * * The Minus
     * * The Plus
     * * The Star
     *
     * @aspDefaultValueIgnore
     * @aspNumberEnum
     * @default undefined
     */
    key: Keys;
    /**
     * Sets a combination of key modifiers, on recognition of which the command will be executed.
     * * None - no modifiers are pressed
     * * Control - ctrl key
     * * Meta - meta key im mac
     * * Alt - alt key
     * * Shift - shift key
     *
     * @aspDefaultValueIgnore
     * @aspNumberEnum
     * @default undefined
     */
    keyModifiers: KeyModifiers;
}
/**
 * Defines a command and a key gesture to define when the command should be executed
 */
export declare class Command extends ChildProperty<Command> {
    /**
     * Defines the name of the command
     *
     * @default ''
     */
    name: string;
    /**
     * Check the command is executable at the moment or not
     *
     * @aspDefaultValueIgnore
     * @default undefined

     */
    canExecute: Function | string;
    /**
     * Defines what to be executed when the key combination is recognized
     *
     * @aspDefaultValueIgnore
     * @default undefined

     */
    execute: Function | string;
    /**
     * Defines a combination of keys and key modifiers, on recognition of which the command will be executed
     * ```html
     * <div id='diagram'></div>
     * ```
     * ```typescript
     * let node: NodeModel;
     * node = {
     * ...
     * id: 'node', width: 100, height: 100, offsetX: 100, offsetY: 100,
     * annotations : [{ content: 'text' }];
     * ...
     * };
     *
     * let diagram: Diagram = new Diagram({
     * ...
     * nodes:[node],
     * commandManager:{
     * commands:[{
     * name:'customCopy',
     * parameter : 'node',
     * canExecute:function(){
     * if(diagram.selectedItems.nodes.length>0 || diagram.selectedItems.connectors.length>0){
     *               return true;
     *           }
     *           return false;
     * },
     * execute:function(){
     * for(let i=0; i<diagram.selectedItems.nodes.length; i++){
     *               diagram.selectedItems.nodes[i].style.fill = 'red';
     *           }
     *           diagram.dataBind();
     * },
     * gesture:{
     * key:Keys.G, keyModifiers:KeyModifiers.Shift | KeyModifiers.Alt
     * }
     * }]
     * },
     * ...
     * });
     * diagram.appendTo('#diagram');
     * ```
     *
     * @default {}
     */
    gesture: KeyGestureModel;
    /**
     * Defines any additional parameters that are required at runtime
     *
     * @default ''
     */
    parameter: string;
    /**
     *
     * Returns the name of class Command
     *
     * @returns {string}  Returns the name of class Command
     * @private
     */
    getClassName(): string;
}
/**
 * Defines the collection of commands and the corresponding key gestures
 *
 */
export declare class CommandManager extends ChildProperty<CommandManager> {
    /**
     * Stores the multiple command names with the corresponding command objects
     * @default []
     */
    commands: CommandModel[];
}
/**
 * Defines the behavior of the context menu items
 */
export declare class ContextMenuSettings extends ChildProperty<ContextMenuSettings> {
    /**
     * Enables/Disables the context menu items
     *
     * @aspDefaultValueIgnore
     * @default undefined
     */
    show: boolean;
    /**
     * Shows only the custom context menu items
     *
     * @aspDefaultValueIgnore
     * @default undefined
     */
    showCustomMenuOnly: boolean;
    /**
     * Defines the custom context menu items
     * ```html
     * <div id='diagram'></div>
     * ```
     * ```typescript
     * let diagram: Diagram = new Diagram({
     * ...
     *   contextMenuSettings: {   show: true, items: [{
     * text: 'delete', id: 'delete', target: '.e-diagramcontent', iconCss: 'e-copy'
     * }],
     * showCustomMenuOnly: false,
     * },
     * ...
     * });
     * diagram.appendTo('#diagram');
     * ```
     *
     * @aspDefaultValueIgnore
     * @default undefined
     */
    items: ContextMenuItemModel[];
}
