import { LayoutActivateParameters, LayoutHandler } from './handler';
import * as d3 from "d3-force";
export interface ForceNodeDatum extends d3.SimulationNodeDatum {
    id: string;
}
export interface ForceEdgeDatum {
    source: string;
    target: string;
}
type d3Type = typeof d3;
type CreateSimulationFunction = (d3: d3Type, nodes: ForceNodeDatum[], edges: ForceEdgeDatum[]) => d3.Simulation<ForceNodeDatum, ForceEdgeDatum>;
export type ForceLayoutParameters = {
    positionFixedByDrag?: boolean;
    positionFixedByClickWithAltKey?: boolean;
    noAutoRestartSimulation?: boolean;
    createSimulation?: CreateSimulationFunction;
};
export declare class ForceLayout implements LayoutHandler {
    private options;
    private onDeactivate?;
    private onTick?;
    constructor(options?: ForceLayoutParameters);
    activate(parameters: LayoutActivateParameters): void;
    deactivate(): void;
    ticked(): void;
    private createSimulation;
    private buildNodeLayouts;
    private forceNodeLayouts;
    private forceLayoutEdges;
    private getNodeLayout;
}
export {};
