import { GraphLib } from '../model/data.js'; import { RuntimeContext } from '../runtime/context.js'; import { Supervisor } from '../runtime/supervisor.js'; import { GraphData, GraphNode, GraphEdge } from '../types/data.js'; import { BaseLayoutOptions, Layout, LayoutWithIterations } from './types.js'; import { Point } from '../types/point.js'; /** * 布局基类 * * Base class for layouts */ declare abstract class BaseLayout implements Layout { abstract readonly id: string; protected abstract getDefaultOptions(): O; protected initialOptions: O; protected runtimeOptions: O; protected context: RuntimeContext; protected model: GraphLib; protected supervisor: Supervisor | null; constructor(options?: Partial); get options(): O; protected mergeOptions(base: O, patch?: Partial): O; execute(data: GraphData, userOptions?: Partial): Promise; protected abstract layout(options: O): Promise; protected layoutInWorker(data: GraphData, options: O): Promise; forEachNode(callback: (node: GraphNode, index: number) => void): void; forEachEdge(callback: (edge: GraphEdge, index: number) => void): void; destroy(): void; } /** * 迭代布局基类 * * Base class for iterative layouts */ declare abstract class BaseLayoutWithIterations extends BaseLayout { abstract stop(): void; abstract tick(iterations: number): void; abstract restart(): void; abstract setFixedPosition(nodeId: string, position: Point | null): void; } /** * 判断布局是否为迭代布局 * * Determine whether the layout is an iterative layout */ declare function isLayoutWithIterations(layout: any): layout is LayoutWithIterations; export { BaseLayout, BaseLayoutOptions, BaseLayoutWithIterations, isLayoutWithIterations };