import type { Box3 } from './Box3'; import type { Matrix4 } from './Matrix4'; import type { Sphere } from './Sphere'; import { Vector3 } from './Vector3'; declare class Ray { readonly isRay = true; origin: Vector3; direction: Vector3; constructor(origin?: Vector3, direction?: Vector3); set(origin: Vector3, direction: Vector3): this; copy(ray: Ray): this; at(t: number, target?: Vector3): Vector3; lookAt(v: Vector3): this; recast(t: number): this; closestPointToPoint(point: Vector3, target?: Vector3): Vector3; distanceToPoint(point: Vector3): number; distanceSqToPoint(point: Vector3): number; distanceSqToSegment(v0: Vector3, v1: Vector3, optionalPointOnRay: Vector3, optionalPointOnSegment: Vector3): number; intersectSphere(sphere: Sphere, target: Vector3): Vector3 | null; intersectsSphere(sphere: Sphere): boolean; intersectBox(box: Box3, target: Vector3): Vector3 | null; intersectsBox(box: Box3): boolean; intersectTriangle(a: Vector3, b: Vector3, c: Vector3, backfaceCulling: boolean, target: Vector3): Vector3 | null; applyMatrix4(matrix4: Matrix4): this; equals(ray: Ray): boolean; clone(): Ray; } export { Ray };