import type { _GCController } from "./GCController.js";
import type { _GCGearShifterElement } from "./GCGearShifterElement.js";
import type { _GCKeyboard } from "./GCKeyboard.js";
import type { _GCMouse } from "./GCMouse.js";
import type { _GCPhysicalInputElementCollection } from "./GCPhysicalInputElementCollection.js";
import type { _GCRacingWheel } from "./GCRacingWheel.js";
import type { _GCSteeringWheelElement } from "./GCSteeringWheelElement.js";
import type { _GCStylus } from "./GCStylus.js";
import type { _NSString } from "../Foundation/NSString.js";
export interface _GCDevicePhysicalInputState {
    /**
     * Profile elements can be accessed using keyed subscript notation, with a valid alias of its inputs. Equivalent to -elements
     */
    objectForKeyedSubscript$?(key: _NSString): _GCGearShifterElement | _GCSteeringWheelElement | null;
    /** The device that this profile is mapping input from. */
    device?(): _GCController | _GCKeyboard | _GCMouse | _GCRacingWheel | _GCStylus | null;
    /**
     * The internal time stamp of the last event. This time interval is not relative to any specific point in time. Your application can subtract a previous timestamp from the returned timestamp to determine the time (in seconds) between events. The of the inputs from two different devices can be compared to determine which event occurred first.
     */
    lastEventTimestamp?(): number;
    /**
     * The interval (in seconds) between the timestamp of the last event and the current time. This value should be treated as a lower bound of the event latency. It may not include (wired or wireless) transmission latency, or latency accrued on the device before the event was transmitted to the host. If the system has gone to sleep between when the event occurred and when this property is read, the returned value may not reflect the true latency.
     */
    lastEventLatency?(): number;
    /**
     * The following properties allow for runtime lookup of any input element on a profile, when provided with a valid alias.
     */
    elements?(): _GCPhysicalInputElementCollection;
    buttons?(): _GCPhysicalInputElementCollection;
    axes?(): _GCPhysicalInputElementCollection;
    switches?(): _GCPhysicalInputElementCollection;
    dpads?(): _GCPhysicalInputElementCollection;
}
