import type { Ray } from "@aura3d/math";
import type { SceneNode } from "@aura3d/scene";
type Tuple3 = readonly [number, number, number];
export interface EditorPickTarget {
    readonly id: string;
    readonly node: SceneNode;
    readonly bounds: {
        readonly min: Tuple3;
        readonly max: Tuple3;
    };
}
export interface EditorPickHit {
    readonly target: EditorPickTarget;
    readonly distance: number;
}
export interface EditorPickingColorId {
    readonly targetId: string;
    readonly encodedId: number;
    readonly color: readonly [number, number, number, number];
}
export interface EditorPickingEvidenceSnapshot {
    readonly source: "origin-master-gpu-picking-adapted";
    readonly registeredTargetCount: number;
    readonly width: number;
    readonly height: number;
    readonly needsUpdate: boolean;
    readonly idCapacity: number;
    readonly sampleColorId: EditorPickingColorId | null;
    readonly decodedSampleTargetId: string | null;
    readonly colorIds: readonly EditorPickingColorId[];
    readonly evidence: {
        readonly colorIdEncoding: boolean;
        readonly colorIdDecoding: boolean;
        readonly framebufferResizeBoundary: boolean;
        readonly raycastFallback: boolean;
    };
    readonly blockedClaims: readonly string[];
}
export declare class PickingService {
    private readonly targets;
    private width;
    private height;
    private needsUpdate;
    setTargets(targets: readonly EditorPickTarget[]): void;
    addTarget(target: EditorPickTarget): void;
    removeTarget(id: string): void;
    pick(ray: Ray): EditorPickHit | undefined;
    resizePickingBuffer(width: number, height: number): void;
    invalidatePickingBuffer(): void;
    colorIdForTarget(targetId: string): EditorPickingColorId | undefined;
    targetIdFromColor(color: readonly [number, number, number] | readonly [number, number, number, number]): string | undefined;
    snapshot(): EditorPickingEvidenceSnapshot;
    static idToColor(id: number): readonly [number, number, number, number];
    static colorToId(red: number, green: number, blue: number): number;
    private colorIds;
}
export {};
//# sourceMappingURL=PickingService.d.ts.map