import { Momentary, Dpad, DpadParams, Mute, Unisense, UnisenseParams, Touchpad, Gyroscope, GyroscopeParams, Accelerometer, AccelerometerParams, Battery, BatteryParams, Lightbar, PlayerLeds, Audio, PowerSaveControl } from "./elements"; import { Input, InputParams } from "./input"; import { DualsenseHID, FirmwareInfo, FactoryInfo, DualsenseColor, ResolvedCalibration } from "./hid"; import { Intensity } from "./math"; import { Orientation, type OrientationParams, ShakeDetector, type ShakeDetectorParams } from "./motion"; /** Settings for your Dualsense controller and each of its inputs */ export interface DualsenseParams extends InputParams { /** Sets the source for HID events. Default: decide automatically */ hid?: DualsenseHID | null; /** Settings for the Playstation button */ ps?: InputParams; /** Settings for the mute button */ mute?: InputParams; /** Settings for the options button */ options?: InputParams; /** Settings for the create button */ create?: InputParams; /** Settings for the triangle button */ triangle?: InputParams; /** Settings for the circle button */ circle?: InputParams; /** Settings for the cross button */ cross?: InputParams; /** Settings for the square button */ square?: InputParams; /** Settings for the dpad buttons */ dpad?: DpadParams; /** Settings for inputs on the left half of the controller */ left?: UnisenseParams; /** Settings for inputs on the right side of the controller */ right?: UnisenseParams; /** Settings for the touchpad inputs */ touchpad?: InputParams; /** Settings for the gyroscope */ gyroscope?: GyroscopeParams; /** Settings for the accelerometer */ accelerometer?: AccelerometerParams; /** Settings for the battery */ battery?: BatteryParams; /** Settings for the connection indicator */ connection?: InputParams; /** Settings for the orientation tracker (Madgwick AHRS) */ orientation?: OrientationParams; /** Settings for the shake detector */ shake?: ShakeDetectorParams; } /** Represents a Dualsense controller */ export declare class Dualsense extends Input { readonly state: Dualsense; /** The Playstation button */ readonly ps: Momentary; /** The mute button and status light */ readonly mute: Mute; /** The options button */ readonly options: Momentary; /** The create button */ readonly create: Momentary; /** The triangle button */ readonly triangle: Momentary; /** The circle button */ readonly circle: Momentary; /** The cross, or X button */ readonly cross: Momentary; /** The square button */ readonly square: Momentary; /** The up/down/left/right dpad buttons */ readonly dpad: Dpad; /** Inputs on the left half of the controller */ readonly left: Unisense; /** Inputs on the right half of the controller */ readonly right: Unisense; /** The touchpad; works like a pair of analog sticks */ readonly touchpad: Touchpad; /** Tracks the controller's angular velocity */ readonly gyroscope: Gyroscope; /** Tracks the controller's linear acceleration */ readonly accelerometer: Accelerometer; /** Battery level and charging status */ readonly battery: Battery; /** Whether a microphone is connected (e.g. headset mic or USB mic) */ readonly microphone: Momentary; /** Whether headphones are connected to the controller's 3.5mm jack */ readonly headphone: Momentary; /** The RGB light bar at the top of the controller */ readonly lightbar: Lightbar; /** The 5 white player indicator LEDs */ readonly playerLeds: PlayerLeds; /** Audio volume, routing, and microphone controls */ readonly audio: Audio; /** Per-subsystem power save controls (disable touch, motion, haptics, audio) */ readonly powerSave: PowerSaveControl; /** * Fused orientation from Madgwick AHRS sensor fusion. * Provides pitch, yaw, roll (radians), quaternion, and * accelerometer-only tilt. Updated automatically each HID report. */ readonly orientation: Orientation; /** * Shake detector with frequency analysis. * Provides intensity (0–1), dominant frequency (Hz), and an * active flag. Updated automatically each HID report. */ readonly shake: ShakeDetector; /** Monotonic sensor timestamp in microseconds from the controller's clock. * Updated with each input report — useful for correlating motion sensor * readings with other inputs across frames. Wraps at 2^32 (~71.6 minutes). */ sensorTimestamp: number; /** Previous sensor timestamp for computing dt (microseconds). */ private prevSensorTimestamp; /** Active interval timers, cleared on dispose */ private readonly timers; /** * Buffered battery reading, sampled on a slow cadence * Battery readings are prone to flip-flopping, so we buffer them */ private readonly pendingBattery; /** Represents the underlying HID device. Provides input events. */ readonly hid: DualsenseHID; /** * Firmware and hardware information. * Contains sensible defaults until the device reports its actual values. */ get firmwareInfo(): FirmwareInfo; /** * Factory information (serial number, body color, board revision). * Contains sensible defaults until the device reports its actual values. */ get factoryInfo(): FactoryInfo; /** * IMU calibration factors derived from the controller's factory calibration * data (Feature Report 0x05). Applied automatically to gyroscope and * accelerometer readings — exposed here for inspection and diagnostics. */ get calibration(): ResolvedCalibration; /** A virtual button representing whether or not a controller is connected */ readonly connection: Momentary; /** True if any input at all is active or changing */ get active(): boolean; /** Returns `true` if the controller is connected via Bluetooth */ get wireless(): boolean; /** Body color of the controller */ get color(): DualsenseColor; /** Factory-stamped serial number of the controller */ get serialNumber(): string; constructor(params?: DualsenseParams); /** Stop all internal timers and release resources. */ dispose(): void; /** Average rumble strength across both halves of the controller. */ private get rumbleIntensity(); /** Reset adaptive trigger feedback on both sides to the default linear feel */ resetTriggerFeedback(): void; /** * Play a built-in test tone via the onboard DSP. * Works over both USB and Bluetooth. Call `stopTestTone()` to stop. * @param target Output destination — "speaker" (default) or "headphone" * @param tone Which tone to play — "1khz" (default), "100hz", or "both" */ startTestTone(target?: "speaker" | "headphone", tone?: "1khz" | "100hz" | "both"): Promise; /** Stop the DSP test tone */ stopTestTone(): Promise; /** Check or adjust rumble intensity evenly across both sides of the controller */ rumble(intensity?: Intensity): number; /** Distributes HID event values to the controller's public inputs. */ private processHID; } //# sourceMappingURL=dualsense.d.ts.map