import { ControllerProfile } from '../models/ControllerProfiles'; import { AxesDetails, ButtonDetails, ReactGamepad, RumbleOptions } from '../constants'; export type { ControllerProfile }; declare const DEAD_ZONE_PRESETS: { none: number; small: number; medium: number; large: number; }; type DeadZonePreset = keyof typeof DEAD_ZONE_PRESETS; export interface UseGamepadsProps { deadZone?: number | DeadZonePreset; stickThreshold?: number; holdThreshold?: number; pollRate?: number; controllerProfile?: ControllerProfile; onConnect?: (gamepad: ReactGamepad) => void; onDisconnect?: (gamepad: ReactGamepad) => void; onUpdate?: (gamepad: ReactGamepad) => void; onGamepadButtonDown?: (button: ButtonDetails) => void; onGamepadButtonUp?: (button: ButtonDetails) => void; onGamepadButtonChange?: (button: ButtonDetails) => void; onGamepadButtonHold?: (button: ButtonDetails) => void; onA?: (button: ButtonDetails) => void; onB?: (button: ButtonDetails) => void; onX?: (button: ButtonDetails) => void; onY?: (button: ButtonDetails) => void; onLB?: (button: ButtonDetails) => void; onRB?: (button: ButtonDetails) => void; onLT?: (button: ButtonDetails) => void; onRT?: (button: ButtonDetails) => void; onSelect?: (button: ButtonDetails) => void; onStart?: (button: ButtonDetails) => void; onLS?: (button: ButtonDetails) => void; onRS?: (button: ButtonDetails) => void; onDPadUp?: (button: ButtonDetails) => void; onDPadDown?: (button: ButtonDetails) => void; onDPadLeft?: (button: ButtonDetails) => void; onDPadRight?: (button: ButtonDetails) => void; onXBoxLogo?: (button: ButtonDetails) => void; onGamepadAxesChange?: (axes: AxesDetails) => void; onLeftStickRight?: (axes: AxesDetails) => void; onLeftStickLeft?: (axes: AxesDetails) => void; onLeftStickUp?: (axes: AxesDetails) => void; onLeftStickDown?: (axes: AxesDetails) => void; onRightStickRight?: (axes: AxesDetails) => void; onRightStickLeft?: (axes: AxesDetails) => void; onRightStickUp?: (axes: AxesDetails) => void; onRightStickDown?: (axes: AxesDetails) => void; onKonamiSuccess?: () => void; } export interface UseGamepadsReturn { gamepad: ReactGamepad | undefined; rumble: (options: RumbleOptions) => Promise; profile: ControllerProfile; /** Maps Xbox button names to the active profile's display names. * e.g. with `controllerProfile: "playstation"`, `buttonLabels.A === "Cross"`. */ buttonLabels: Record; } /** * Shared core hook. Both `useGamepads` and `useGamepad` are thin wrappers * over this — they differ only in which gamepad indices get processed. * * @param props Standard hook options * @param indexFilter When provided, only the gamepad at this index is tracked. * When undefined, all connected gamepads are tracked. */ export declare function useGamepadCore(props?: UseGamepadsProps, indexFilter?: number): UseGamepadsReturn;