import { LinkLengthAccessor } from './linklengths'; import { Rectangle } from './rectangle'; export declare enum EventType { start = 0, tick = 1, end = 2 } export interface Event { type: EventType; alpha: number; stress?: number; listener?: () => void; } export interface InputNode { index?: number; x?: number; y?: number; width?: number; height?: number; fixed?: number; } export interface Node extends InputNode { x: number; y: number; } export interface Group { bounds?: Rectangle; leaves?: Node[]; groups?: Group[]; padding: number; } export interface Link { source: NodeRefType; target: NodeRefType; length?: number; weight?: number; } export declare type LinkNumericPropertyAccessor = (t: Link) => number; export interface LinkLengthTypeAccessor extends LinkLengthAccessor> { getType: LinkNumericPropertyAccessor; } export declare class Layout { private _canvasSize; private _linkDistance; private _defaultNodeSize; private _linkLengthCalculator; private _linkType; private _avoidOverlaps; private _handleDisconnected; private _alpha; private _lastStress; private _running; private _nodes; private _groups; private _rootGroup; private _links; private _constraints; private _distanceMatrix; private _descent; private _directedLinkConstraints; private _threshold; private _visibilityGraph; private _groupCompactness; protected event: any; on(e: EventType | string, listener: (event?: Event) => void): this; protected trigger(e: Event): void; protected kick(): void; protected tick(): boolean; private updateNodePositions; nodes(): Array; nodes(v: Array): this; groups(): Array; groups(x: Array): this; powerGraphGroups(f: Function): this; avoidOverlaps(): boolean; avoidOverlaps(v: boolean): this; handleDisconnected(): boolean; handleDisconnected(v: boolean): this; flowLayout(axis: string, minSeparation: number | ((t: any) => number)): this; links(): Array>; links(x: Array>): this; constraints(): Array; constraints(c: Array): this; distanceMatrix(): Array>; distanceMatrix(d: Array>): this; size(): Array; size(x: Array): this; defaultNodeSize(): number; defaultNodeSize(x: number): this; groupCompactness(): number; groupCompactness(x: number): this; linkDistance(): number; linkDistance(): LinkNumericPropertyAccessor; linkDistance(x: number): this; linkDistance(x: LinkNumericPropertyAccessor): this; linkType(f: Function | number): this; convergenceThreshold(): number; convergenceThreshold(x: number): this; alpha(): number; alpha(x: number): this; getLinkLength(link: Link): number; static setLinkLength(link: Link, length: number): void; getLinkType(link: Link): number; linkAccessor: LinkLengthTypeAccessor; symmetricDiffLinkLengths(idealLength: number, w?: number): this; jaccardLinkLengths(idealLength: number, w?: number): this; start(initialUnconstrainedIterations?: number, initialUserConstraintIterations?: number, initialAllConstraintsIterations?: number, gridSnapIterations?: number, keepRunning?: boolean, centerGraph?: boolean): this; private initialLayout; private separateOverlappingComponents; resume(): this; stop(): this; prepareEdgeRouting(nodeMargin?: number): void; routeEdge(edge: any, ah: number, draw: any): any[]; static getSourceIndex(e: Link): number; static getTargetIndex(e: Link): number; static linkId(e: Link): string; static dragStart(d: Node | Group): void; private static stopNode; private static storeOffset; static dragOrigin(d: Node | Group): { x: number; y: number; }; static drag(d: Node | Group, position: { x: number; y: number; }): void; static dragEnd(d: any): void; static mouseOver(d: any): void; static mouseOut(d: any): void; }