import { type HTMLAttributes, type Ref } from 'react';
import * as THREE from 'three';
export type HyperspeedDistortion = {
uniforms: Record;
getDistortion: string;
getJS?: (progress: number, time: number) => THREE.Vector3;
};
export type HyperspeedColors = {
roadColor: number;
islandColor: number;
background: number;
shoulderLines: number;
brokenLines: number;
leftCars: number[];
rightCars: number[];
sticks: number | number[];
};
export type HyperspeedOptions = {
onSpeedUp?: (ev: MouseEvent | TouchEvent) => void;
onSlowDown?: (ev: MouseEvent | TouchEvent) => void;
distortion?: string | HyperspeedDistortion;
length: number;
roadWidth: number;
islandWidth: number;
lanesPerRoad: number;
fov: number;
fovSpeedUp: number;
speedUp: number;
carLightsFade: number;
totalSideLightSticks: number;
lightPairsPerRoadWay: number;
shoulderLinesWidthPercentage: number;
brokenLinesWidthPercentage: number;
brokenLinesLengthPercentage: number;
lightStickWidth: [number, number];
lightStickHeight: [number, number];
movingAwaySpeed: [number, number];
movingCloserSpeed: [number, number];
carLightsLength: [number, number];
carLightsRadius: [number, number];
carWidthPercentage: [number, number];
carShiftX: [number, number];
carFloorSeparation: [number, number];
colors: HyperspeedColors;
isHyper?: boolean;
};
export type HyperspeedEffectOptions = Partial> & {
colors?: Partial;
};
export type HyperspeedProps = Omit, 'children'> & {
effectOptions?: HyperspeedEffectOptions;
ref?: Ref;
};
export declare const Hyperspeed: ({ className, effectOptions, ref, style, "aria-hidden": ariaHidden, ...props }: HyperspeedProps) => import("react/jsx-runtime").JSX.Element;
export default Hyperspeed;