import { Geometry } from "../../Geometry";
export interface ProjectedDecalTriangleMesh {
    readonly positions: readonly (readonly [number, number, number])[];
    readonly normals?: readonly (readonly [number, number, number])[];
    readonly indices?: readonly number[];
}
export interface ProjectedDecalBox {
    readonly center: readonly [number, number, number];
    readonly size: readonly [number, number, number];
    readonly basis?: ProjectedDecalBasis;
    readonly normalOffset?: number;
    readonly shape?: ProjectedDecalShape;
    readonly ellipseSegments?: number;
}
export interface ProjectedDecalBasis {
    readonly right: readonly [number, number, number];
    readonly up: readonly [number, number, number];
    readonly normal: readonly [number, number, number];
}
export interface ProjectedDecalRay {
    readonly origin: readonly [number, number, number];
    readonly direction: readonly [number, number, number];
}
export interface ProjectedDecalGeometryResult {
    readonly geometry: Geometry;
    readonly sourceTriangleCount: number;
    readonly clippedTriangleCount: number;
    readonly vertexCount: number;
}
export interface ProjectedDecalRaycastOptions {
    readonly size: readonly [number, number, number];
    readonly normalOffset?: number;
    readonly maxDistance?: number;
    readonly includeBackfaces?: boolean;
    readonly upHint?: readonly [number, number, number];
    readonly shape?: ProjectedDecalShape;
    readonly ellipseSegments?: number;
}
export interface ProjectedDecalRaycastHit {
    readonly position: readonly [number, number, number];
    readonly normal: readonly [number, number, number];
    readonly distance: number;
    readonly triangleIndex: number;
}
export interface ProjectedDecalRaycastResult extends ProjectedDecalGeometryResult {
    readonly hit: ProjectedDecalRaycastHit;
    readonly box: ProjectedDecalBox;
}
export type ProjectedDecalShape = "box" | "ellipse";
export declare function createProjectedDecalGeometry(mesh: ProjectedDecalTriangleMesh, box: ProjectedDecalBox): ProjectedDecalGeometryResult;
export declare function createRaycastProjectedDecalGeometry(mesh: ProjectedDecalTriangleMesh, ray: ProjectedDecalRay, options: ProjectedDecalRaycastOptions): ProjectedDecalRaycastResult;
export declare function raycastProjectedDecalMesh(mesh: ProjectedDecalTriangleMesh, ray: ProjectedDecalRay, options?: Pick<ProjectedDecalRaycastOptions, "maxDistance" | "includeBackfaces">): ProjectedDecalRaycastHit | undefined;
//# sourceMappingURL=ProjectedDecalGeometry.d.ts.map