import { Object3D } from 'three/src/core/Object3D';
import { MeshBasicMaterial } from 'three/src/materials/MeshBasicMaterial';
import { TypedSopNode } from './_Base';
import { CoreGroup } from '../../../core/geometry/Group';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
declare class RaySopParamsConfig extends NodeParamsConfig {
    /** @param toggle on to use the normals as the ray direction */
    useNormals: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.BOOLEAN>;
    /** @param if the normals are not used as the ray direction, this define the direction used */
    direction: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.VECTOR3>;
    /** @param copies the normals from the right geometry to the left one */
    transferFaceNormals: import("../utils/params/ParamsConfig").ParamTemplate<import("../../poly/ParamType").ParamType.BOOLEAN>;
}
export declare class RaySopNode extends TypedSopNode<RaySopParamsConfig> {
    params_config: RaySopParamsConfig;
    static type(): string;
    private _bound_assign_mat;
    private _raycaster;
    static double_sided_material(): MeshBasicMaterial;
    static displayedInputNames(): string[];
    initializeNode(): void;
    create_params(): void;
    cook(input_contents: CoreGroup[]): void;
    ray(core_group: CoreGroup, core_group_collision: CoreGroup): void;
    _assign_double_sided_material_to_core_group(core_group: CoreGroup): void;
    _assign_double_sided_material_to_object(object: Object3D): void;
}
export {};
