/** 特殊原子节点位置 */
export type Side = 'before' | 'after';
/** 光标信息 */
export interface ICursorPosition {
    /** 节点的唯一key */
    nodeId: string;
    /** 纸张id */
    pageId: string;
    /** 父节点key */
    preNodeId: string;
    /** 归属节点key */
    preLocation: string;
    /** 节点路径，从根到当前节点 */
    path: string[];
    /** 节点索引路径: 每层在父节点数组中的下标 */
    pathIndex: number[];
    /** 偏移量 */
    offset: number;
    /** 特殊原子节点的光标“在前/在后” */
    side: Side;
    /** 是否是占位符 */
    isPlaceholder: boolean;
    /** 光标阶段 */
    phase: 'preview' | 'commit';
}
/** 选区信息 */
export interface ISelectionRange {
    /** 起始点 */
    anchor: ICursorPosition;
    /** 结束点 */
    focus: ICursorPosition;
}
/** 真正的文档选区 */
export interface INormalizedRange {
    rangeStart: ICursorPosition;
    rangeEnd: ICursorPosition;
}
export type Rect = {
    pageId: string;
    x: number;
    y: number;
    width: number;
    height: number;
};
export interface CursorIntent {
    kind: 'boundary' | 'point' | 'continue';
    offset: number;
    side: Side;
    dir?: 'left' | 'right' | 'up' | 'down';
}
