import { MoveDir } from '../cursor/movement/types';
import { EventManager } from './EventManager';
/**
 * 事件处理器配置
 */
export interface EventHandlerConfig {
    /** 事件名称（如 'backspace', 'click' 等） */
    event: string;
    /** 事件处理函数 */
    handler: (event: any) => void;
    /** 是否阻止默认行为 */
    preventDefault?: boolean;
    /** 事件类型：hotkey 或 dom 或 custom */
    type: 'hotkey' | 'dom' | 'custom';
    /** DOM 事件绑定的目标元素（可选，默认为 doc.el） */
    target?: HTMLElement | (() => HTMLElement);
}
/**
 * 事件处理器基类
 */
export interface IEventHandler {
    /** 获取事件处理器配置列表 */
    getHandlers(): EventHandlerConfig[];
    /** 初始化（可选） */
    init?(): void;
    /** 销毁（可选） */
    destroy?(): void;
}
/**
 * 事件处理器上下文
 */
export interface EventHandlerContext {
    eventManager: EventManager;
}
export type EventHandler = (event: any) => void;
/**
 * 键盘操作类型
 */
export type KeydownType = 
/** 向后删除 */
'backspace'
/** 向前删除 */
 | 'delete'
/** 回车/换行 */
 | 'enter'
/** 制表符 - 对应 Tab 键 */
 | 'tab'
/** 方向键 */
 | 'arrow'
/** 全选 */
 | 'selectAll';
export interface KeydownOpts {
    /** 按键类型 */
    type: KeydownType;
    /** 方向位置 */
    dir: MoveDir;
    /** 是否扩展选区 */
    shift: boolean;
    /** 是否以词/较大步进移动 */
    ctrl: boolean;
}
export type MoveOpts = Pick<KeydownOpts, 'dir' | 'shift' | 'ctrl'>;
/**
 * 调度事件类型枚举
 * 定义了系统中所有需要进行分发/调度的事件类型标识
 */
export type DispatchEventType = 'ime:compositionstart' | 'ime:compositionupdate' | 'ime:compositionend' | 'ime:input' | 'ime:paste' | 'ime:focus' | 'ime:blur' | 'ime:keydown' | 'caret:locate' | 'konva:click' | 'konva:dragstart' | 'konva:dragmove' | 'konva:dragend' | 'konva:contextmenu' | 'inter:str' | 'inter:stc' | 'inter:stall' | 'inter:active' | 'inter:chg-hmid';
export type EventBusType = 'autoScroll:start' | 'autoScroll:move' | 'autoScroll:stop' | 'caret:changed' | 'caret:requestScroll' | 'cursor:change' | 'tableSelection:change' | 'dragHoverId:change' | 'hoverModelId:change' | 'panelData:change';
