/**
 * sends a trigger when an object is hovered
 *
 *
 */
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { BaseUserInputJsNode } from './_BaseUserInput';
import { CoreEventEmitter } from '../../../core/event/CoreEventEmitter';
import { JsConnectionPointType, JsConnectionPoint } from '../utils/io/connections/Js';
import { Constructor } from '../../../types/GlobalTypes';
import { ButtonAndModifierOptionsAsString, ButtonsAndModifierOptionsAsString, ModifierOptionsAsString } from '../../scene/utils/actors/rayObjectIntersection/Common';
import { JsLinesCollectionController } from './code/utils/JsLinesCollectionController';
export declare function MouseEventConfigParamConfig<TBase extends Constructor>(Base: TBase): {
    new (...args: any[]): {
        buttonLeft: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        buttonMiddle: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        buttonRight: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        ctrl: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        shift: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        alt: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    };
} & TBase;
export declare function MouseDoubleClickConfigParamConfig<TBase extends Constructor>(Base: TBase): {
    new (...args: any[]): {
        ctrl: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        shift: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        alt: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    };
} & TBase;
export declare function PointerEventConfigParamConfig<TBase extends Constructor>(Base: TBase): {
    new (...args: any[]): {
        buttonLeft: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        buttonMiddle: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        buttonRight: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        ctrl: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        shift: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        alt: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    };
} & TBase;
declare const BaseMouseConfigParamsConfig_base: {
    new (...args: any[]): {
        buttonLeft: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        buttonMiddle: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        buttonRight: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        ctrl: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        shift: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        alt: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    };
} & typeof NodeParamsConfig;
export declare class BaseMouseConfigParamsConfig extends BaseMouseConfigParamsConfig_base {
}
declare const BaseMouseDoubleClickConfigParamsConfig_base: {
    new (...args: any[]): {
        ctrl: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        shift: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        alt: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    };
} & typeof NodeParamsConfig;
export declare class BaseMouseDoubleClickConfigParamsConfig extends BaseMouseDoubleClickConfigParamsConfig_base {
}
declare const BasePointerConfigParamsConfig_base: {
    new (...args: any[]): {
        buttonLeft: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        buttonMiddle: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        buttonRight: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
        ctrl: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        shift: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        alt: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    };
} & typeof NodeParamsConfig;
export declare class BasePointerConfigParamsConfig extends BasePointerConfigParamsConfig_base {
}
export declare class BaseOnObjectPointerEventBaseJsParamsConfig extends NodeParamsConfig {
    /** @param blockObjectsBehind */
    blockObjectsBehind: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param skipIfObjectsInFront */
    skipIfObjectsInFront: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
}
export declare class CPUOnObjectPointerEventJsParamsConfig extends BaseOnObjectPointerEventBaseJsParamsConfig {
    /** @param include children */
    traverseChildren: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
    /** @param pointsThreshold */
    pointsThreshold: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    /** @param lineThreshold */
    lineThreshold: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
}
export declare class GPUOnObjectPointerEventJsParamsConfig extends BaseOnObjectPointerEventBaseJsParamsConfig {
}
export declare abstract class ExtendableOnObjectPointerEventJsNode<T extends BaseOnObjectPointerEventBaseJsParamsConfig> extends BaseUserInputJsNode<T> {
    isTriggering(): boolean;
    eventEmitter(): CoreEventEmitter;
    initializeNode(): void;
    protected _additionalInputs(): JsConnectionPoint<JsConnectionPointType>[];
}
export declare abstract class BaseOnObjectPointerEventJsNode extends ExtendableOnObjectPointerEventJsNode<CPUOnObjectPointerEventJsParamsConfig> {
    readonly paramsConfig: CPUOnObjectPointerEventJsParamsConfig;
}
export declare abstract class BaseOnObjectPointerGPUEventJsNode extends ExtendableOnObjectPointerEventJsNode<GPUOnObjectPointerEventJsParamsConfig> {
    readonly paramsConfig: GPUOnObjectPointerEventJsParamsConfig;
}
export declare abstract class BaseMouseConfigJsNode extends BaseUserInputJsNode<BaseMouseConfigParamsConfig> {
    readonly paramsConfig: BaseMouseConfigParamsConfig;
}
export declare abstract class BaseMouseDoubleClickConfigJsNode extends BaseUserInputJsNode<BaseMouseDoubleClickConfigParamsConfig> {
    readonly paramsConfig: BaseMouseDoubleClickConfigParamsConfig;
}
export declare abstract class BasePointerConfigJsNode extends BaseUserInputJsNode<BasePointerConfigParamsConfig> {
    readonly paramsConfig: BasePointerConfigParamsConfig;
}
export declare function pointerButtonConfig(node: BasePointerConfigJsNode, linesController: JsLinesCollectionController): ButtonAndModifierOptionsAsString;
export declare function mouseButtonsConfig(node: BaseMouseConfigJsNode, linesController: JsLinesCollectionController): ButtonsAndModifierOptionsAsString;
export declare function mouseDoubleClickButtonsConfig(node: BaseMouseDoubleClickConfigJsNode, linesController: JsLinesCollectionController): ModifierOptionsAsString;
export declare enum OnObjectPointerEventGPUJsNodeInputName {
    worldPosMaterial = "worldPosMaterial"
}
export declare enum OnObjectPointerEventGPUJsNodeOutputName {
    distance = "distance"
}
export {};
