import { VNode } from "vue";

//#region packages/core/src/client/record.d.ts
type PositionInfo = [source: string, line: number, column: number];
interface Store {
  hasData: boolean;
  vnodeToPos: WeakMap<object, PositionInfo>;
  fileToVNode: Map<string, WeakSet<object>>;
  posToVNode: Map<string, Map<number, Map<number, WeakSet<object>>>>;
  events?: unknown;
}
declare function getInternalStore(): Store;
declare function recordPosition(source: string, line: number, column: number, node: VNode): VNode;
declare class ElementTraceInfo {
  pos: PositionInfo;
  vnode: VNode | undefined;
  el: Element | undefined;
  constructor(pos: PositionInfo, el?: Element, vnode?: VNode);
  get filepath(): string;
  get fullpath(): string;
  get rect(): DOMRect | undefined;
  getElementsSameFile(): Element[] | undefined;
  getParent(): ElementTraceInfo | undefined;
  getElementsSamePosition(): Element[] | undefined;
}
declare function findTraceFromElement(el?: Element | null): ElementTraceInfo | undefined;
declare function findTraceFromVNode(vnode?: VNode, el?: Element): ElementTraceInfo | undefined;
declare function findTraceAtPointer(e: {
  x: number;
  y: number;
}): ElementTraceInfo | undefined;
declare function hasData(): boolean;
//#endregion
export { ElementTraceInfo, PositionInfo, findTraceAtPointer, findTraceFromElement, findTraceFromVNode, getInternalStore, hasData, recordPosition };