import { Primitive, Ray } from "../primitive/Primitive";
import { NDArrayFloat32, NDArrayBool } from "../ndarray/NDArray";
import type { Form, ClosestPointResult, ClosestPointBatchResult, ClosestPointPairResult, ClosestPointPairBatchResult, NeighborResult, NeighborBatchResult, NeighborPairResult, NeighborKnnResult, NeighborKnnBatchResult, KnnOptions, NeighborSearchOptions, RayCastResult, RayCastPrimBatchResult, RayCastFormBatchResult, RayCastOptions } from "./sync";
/** Squared distance between two primitives, off the main thread. */
export declare function distance2(a: Primitive, b: Primitive): Promise<number | NDArrayFloat32>;
/** Squared distance from a form to a primitive, off the main thread. */
export declare function distance2(form: Form, prim: Primitive): Promise<number | NDArrayFloat32>;
/** Squared distance between two forms, off the main thread. */
export declare function distance2(a: Form, b: Form): Promise<number>;
/** Distance between two primitives (signed for plane-point), off the main thread. */
export declare function distance(a: Primitive, b: Primitive): Promise<number | NDArrayFloat32>;
/** Distance from a form to a primitive, off the main thread. */
export declare function distance(form: Form, prim: Primitive): Promise<number | NDArrayFloat32>;
/** Distance between two forms, off the main thread. */
export declare function distance(a: Form, b: Form): Promise<number>;
/** Closest point on B to A (prim × prim), off the main thread. */
export declare function closestPoint(a: Primitive, b: Primitive): Promise<ClosestPointResult | ClosestPointBatchResult>;
/** Closest pair of points between A and B (prim × prim), off the main thread. */
export declare function closestPointPair(a: Primitive, b: Primitive): Promise<ClosestPointPairResult | ClosestPointPairBatchResult>;
/** Find nearest element in a form, off the main thread. */
export declare function neighborSearch(form: Form, query: Primitive, opts?: NeighborSearchOptions): Promise<NeighborResult | NeighborBatchResult>;
/** Find nearest pair of elements between two forms, off the main thread. */
export declare function neighborSearch(a: Form, b: Form, opts?: NeighborSearchOptions): Promise<NeighborPairResult>;
/** Find the k nearest elements in a form, off the main thread. */
export declare function neighborSearch(form: Form, query: Primitive, opts: KnnOptions): Promise<NeighborKnnResult | NeighborKnnBatchResult>;
/** Intersection test between two primitives, off the main thread. */
export declare function intersects(a: Primitive, b: Primitive): Promise<boolean | NDArrayBool>;
/** Intersection test between form and primitive, off the main thread. */
export declare function intersects(form: Form, prim: Primitive): Promise<boolean | NDArrayBool>;
/** Intersection test between two forms, off the main thread. */
export declare function intersects(a: Form, b: Form): Promise<boolean>;
/** Cast a ray against a primitive, off the main thread. */
export declare function rayCast(ray: Ray, target: Primitive, opts?: RayCastOptions): Promise<RayCastResult | RayCastPrimBatchResult>;
/** Cast a ray against a form, off the main thread. */
export declare function rayCast(ray: Ray, form: Form, opts?: RayCastOptions): Promise<RayCastResult | RayCastFormBatchResult>;
//# sourceMappingURL=async.d.ts.map