import type { _GCController } from "./GCController.js";
import type { _GCControllerButtonInput } from "./GCControllerButtonInput.js";
import type { _GCControllerDirectionPad } from "./GCControllerDirectionPad.js";
import type { _GCControllerElement } from "./GCControllerElement.js";
import type { _GCGamepadSnapshot } from "./GCGamepadSnapshot.js";
import type { _GCPhysicalInputProfile } from "./GCPhysicalInputProfile.js";
export declare class _GCGamepad extends _GCPhysicalInputProfile {
    static alloc(): _GCGamepad;
    static new(): _GCGamepad;
    init(): _GCGamepad;
    /**
     * Polls the state vector of the controller and saves it to a snapshot. The snapshot is stored in a device independent format that can be serialized and used at a later date. This is useful for features such as quality assurance, save game or replay functionality among many. If your application is heavily multithreaded this may also be useful to guarantee atomicity of input handling as a snapshot will not change based on user input once it is taken.
     */
    saveSnapshot(): _GCGamepadSnapshot;
    /**
     * A profile keeps a reference to the controller that this profile is mapping input from.
     */
    controller(): _GCController | null;
    valueChangedHandler(): ((arg0: _GCGamepad, arg1: _GCControllerElement) => void) | null;
    setValueChangedHandler$(value: ((arg0: _GCGamepad, arg1: _GCControllerElement) => void) | null): void;
    /**
     * Required to be analog in the Standard profile. All the elements of this directional input are thus analog.
     */
    dpad(): _GCControllerDirectionPad;
    /**
     * All face buttons are required to be analog in the Standard profile. These must be arranged in the diamond pattern given below: Y / \ X B \ / A
     */
    buttonA(): _GCControllerButtonInput;
    buttonB(): _GCControllerButtonInput;
    buttonX(): _GCControllerButtonInput;
    buttonY(): _GCControllerButtonInput;
    /** Shoulder buttons are required to be analog inputs. */
    leftShoulder(): _GCControllerButtonInput;
    /** Shoulder buttons are required to be analog inputs. */
    rightShoulder(): _GCControllerButtonInput;
}
