import { Object3D } from 'three';
import { Constructor, ConvertToStrings } from '../../../../../types/GlobalTypes';
import { BaseRayObjectIntersectionsController } from './_BaseRayObjectIntersectionsController';
import { ObjectOptions, GPUOptions, CPUOptions, PriorityOptions, ModifierOptionsAsString, OnlyModifierOptions } from './Common';
interface DoubleClickOptions {
    callback: () => void;
}
export interface ObjectToClickOptions extends ObjectOptions {
    doubleClick: DoubleClickOptions;
    config: OnlyModifierOptions;
}
export interface ObjectToDoubleClickOptionsAsString {
    priority: ConvertToStrings<PriorityOptions>;
    cpu?: ConvertToStrings<CPUOptions>;
    gpu?: ConvertToStrings<GPUOptions>;
    doubleClick: ConvertToStrings<DoubleClickOptions>;
    config: ModifierOptionsAsString;
}
export declare function DoubleClickParamConfig<TBase extends Constructor>(Base: TBase): {
    new (...args: any[]): {};
} & TBase;
export declare class RayObjectIntersectionsDoubleClickController extends BaseRayObjectIntersectionsController {
    protected _propertiesListByObject: Map<Object3D, ObjectToClickOptions[]>;
    protected _intersectedStateOnDoubleClickByObject: Map<Object3D, boolean>;
    private _objectsMatchingEventConfig;
    onDoubleClick(event: Readonly<PointerEvent | MouseEvent | TouchEvent>): void;
}
export {};
