// Type definitions for D3JS d3-quadtree module v1.0.1 // Project: https://github.com/d3/d3-quadtree/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped /** * Leaf node of the quadtree. */ export interface QuadtreeLeaf { data: T; next?: QuadtreeLeaf; } /** * Internal nodes of the quadtree are represented as four-element arrays in left-to-right, top-to-bottom order: * * 0 - the top-left quadrant, if any. * 1 - the top-right quadrant, if any. * 2 - the bottom-left quadrant, if any. * 3 - the bottom-right quadrant, if any. * * A child quadrant may be undefined if it is empty. */ export interface QuadtreeInternalNode extends Array | QuadtreeLeaf | undefined> { } export interface Quadtree { x(): (d: T) => number; x(x: (d: T) => number): this; y(): (d: T) => number; y(y: (d: T) => number): this; extent(): [[number, number], [number, number]] | undefined; extent(extend: [[number, number], [number, number]]): this; cover(x: number, y: number): this; add(datum: T): this; addAll(data: Array): this; remove(datum: T): this; removeAll(data: Array): this; copy(): Quadtree; root(): QuadtreeInternalNode | QuadtreeLeaf; data(): Array; size(): number; find(x: number, y: number, radius?: number): T | undefined; visit(callback: (node: QuadtreeInternalNode | QuadtreeLeaf, x0: number, y0: number, x1: number, y1: number) => (void | boolean)): this; visitAfter(callback: (node: QuadtreeInternalNode | QuadtreeLeaf, x0: number, y0: number, x1: number, y1: number) => void): this; } export function quadtree(): Quadtree<[number, number]>; export function quadtree(data: Array<[number, number]>): Quadtree<[number, number]>; export function quadtree(): Quadtree; export function quadtree(data: Array, x?: (d: T) => number, y?: (d: T) => number): Quadtree;