import * as vec2 from 'zrender/lib/core/vector.js'; 
 | 
import { RectLike } from 'zrender/lib/core/BoundingRect.js'; 
 | 
interface InputNode { 
 | 
    p?: vec2.VectorArray; 
 | 
    fixed?: boolean; 
 | 
    /** 
 | 
     * Weight 
 | 
     */ 
 | 
    w: number; 
 | 
    /** 
 | 
     * Repulsion 
 | 
     */ 
 | 
    rep: number; 
 | 
} 
 | 
interface InputEdge { 
 | 
    ignoreForceLayout?: boolean; 
 | 
    n1: InputNode; 
 | 
    n2: InputNode; 
 | 
    /** 
 | 
     * Distance 
 | 
     */ 
 | 
    d: number; 
 | 
} 
 | 
interface LayoutCfg { 
 | 
    gravity?: number; 
 | 
    friction?: number; 
 | 
    rect?: RectLike; 
 | 
} 
 | 
export declare function forceLayout<N extends InputNode, E extends InputEdge>(inNodes: N[], inEdges: E[], opts: LayoutCfg): { 
 | 
    warmUp: () => void; 
 | 
    setFixed: (idx: number) => void; 
 | 
    setUnfixed: (idx: number) => void; 
 | 
    /** 
 | 
     * Before step hook 
 | 
     */ 
 | 
    beforeStep: (cb: (nodes: N[], edges: E[]) => void) => void; 
 | 
    /** 
 | 
     * After step hook 
 | 
     */ 
 | 
    afterStep: (cb: (nodes: N[], edges: E[], finished: boolean) => void) => void; 
 | 
    /** 
 | 
     * Some formulas were originally copied from "d3.js" 
 | 
     * https://github.com/d3/d3/blob/b516d77fb8566b576088e73410437494717ada26/src/layout/force.js 
 | 
     * with some modifications made for this project. 
 | 
     * See the license statement at the head of this file. 
 | 
     */ 
 | 
    step: (cb?: (finished: boolean) => void) => void; 
 | 
}; 
 | 
export {}; 
 |