import { BaseMetaNode } from '../../layout/types';
import { Doc } from '../../view/Doc';
import { CursorIntent, Side } from '../types/cursor';
import { Page } from '../../view/Page';
export interface HitResult {
    id: string;
    offset: number;
    side: Side;
    path: string[];
    pathIndex: number[];
    pageId: string;
    preId: string;
    isPlaceholder: boolean;
}
export type HitIntent = {
    type: 'cursor';
} | {
    type: 'selection';
    anchorId: string;
    focusId: string;
};
export type HitIntentResult = {
    type: 'cursor';
    hit: HitResult;
} | {
    type: 'selection';
    anchor: HitResult;
    focus: HitResult;
} | null;
export interface HitHandler {
    /** 视觉命中 -> HitResult */
    handleHitDetection(doc: Doc, node: BaseMetaNode, actualX: number, actualY: number): HitResult | null;
    /** 逻辑命中 -> HitResult */
    resolveCursorIntent?: (doc: Doc, node: BaseMetaNode, intent: CursorIntent) => HitResult | null;
    /** 是否点中即全选 */
    isClickSelectAll?: (doc: Doc, node: BaseMetaNode) => HitIntent;
}
/**
 * 指针命中结果（统一数据结构）
 * 所有拖拽 / hover / 点击 / cursor 都应该基于它
 */
export interface PointerHitResult {
    /** 命中的页面 */
    page: Page;
    /** 命中的区域 */
    zone: 'header' | 'footer' | 'body';
    /** 画布坐标 */
    canvasX: number;
    canvasY: number;
    /** 相对于 page 的坐标 */
    relX: number;
    relY: number;
}
