import type { _GCPhysicalInputElement } from "./GCPhysicalInputElement.js";
import type { _NSSet } from "../Foundation/NSSet.js";
import type { NSRange } from "../structs/NSRange.js";
export interface _GCSwitchPositionInput {
    /**
     * Set this block if you want to be notified when the value on the switch changes. the element that has been modified. value
     */
    positionDidChangeHandler?(): ((arg0: _GCPhysicalInputElement, arg1: _GCSwitchPositionInput, arg2: number) => void) | null;
    setPositionDidChangeHandler$?(value: ((arg0: _GCPhysicalInputElement, arg1: _GCSwitchPositionInput, arg2: number) => void) | null): void;
    /** The switch's position. valueDidChangeHandler */
    position?(): number;
    /** The (inclusive) bounds of possible position values for the switch. */
    positionRange?(): NSRange;
    /**
     * if the switch input can only transition to positions that are adjacent to the current position.
     */
    sequential?(): boolean;
    /**
     * Check if the position input value can "roll over" when reaching either of its bounds. This will always be for non-sequential switch inputs.
     */
    canWrap?(): boolean;
    /**
     * The timestamp of the last value. This time interval is not relative to any specific point in time. You can subtract a previous timestamp from the returned timestamp to determine the time (in seconds) between changes to the value.
     */
    lastPositionTimestamp?(): number;
    /**
     * The interval (in seconds) between the timestamp of the last event and the current time. This 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.
     */
    lastPositionLatency?(): number;
    /**
     * An object describing the physical action(s) the user performs to manipulate this input.
     */
    sources?(): _NSSet;
}
