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 { _GCMicroGamepadSnapshot } from "./GCMicroGamepadSnapshot.js";
import type { _GCPhysicalInputProfile } from "./GCPhysicalInputProfile.js";
export declare class _GCMicroGamepad extends _GCPhysicalInputProfile {
    static alloc(): _GCMicroGamepad;
    static new(): _GCMicroGamepad;
    init(): _GCMicroGamepad;
    /**
     * 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. @see GCMicroGamepadSnapshot
     * @deprecated Use the -[GCController capture] method instead
     */
    saveSnapshot(): _GCMicroGamepadSnapshot;
    /**
     * Sets the state vector of the micro gamepad to a copy of the input micro gamepad's state vector. @note If the controller's snapshot flag is set to NO, this method has no effect. @see GCController.snapshot
     */
    setStateFromMicroGamepad$(microGamepad: _GCMicroGamepad): void;
    /**
     * A profile keeps a reference to the controller that this profile is mapping input from.
     */
    controller(): _GCController | null;
    valueChangedHandler(): ((arg0: _GCMicroGamepad, arg1: _GCControllerElement) => void) | null;
    setValueChangedHandler$(value: ((arg0: _GCMicroGamepad, arg1: _GCControllerElement) => void) | null): void;
    /**
     * Optionally analog in the Micro profile. All the elements of this directional input are either analog or digital.
     */
    dpad(): _GCControllerDirectionPad;
    /**
     * The Micro profile has two buttons that are optionally analog in the Micro profile. Button A is the primary action button, it indicates affirmative action and should be used to advance in menus or perform the primary action in gameplay.
     */
    buttonA(): _GCControllerButtonInput;
    /**
     * Button X is the secondary action button, it indicates an alternate affirmative action and should be used to perform a secondary action. If there is no secondary action it should be used as equivalent to buttonA. Unlike on other profiles there is no negative button on this profile. Instead the menu button should be used to present menu content or to retreat in a menu flow. @see buttonA
     */
    buttonX(): _GCControllerButtonInput;
    /**
     * Button menu is the primary menu button, and should be used to enter the main menu and pause the game.
     */
    buttonMenu(): _GCControllerButtonInput;
    /**
     * The Micro profile can use the raw position values of the touchpad on the remote as D-pad values, or it can create a virtual dpad centered around the first contact point with the surface. If NO; a smaller sliding window is created around the initial touch point and subsequent movement is relative to that center. Movement outside the window will slide the window with it to re-center it. This is great for surfaces where there is no clear sense of a middle and drift over time is an issue. If YES; the absolute values are used and any drift will have to managed manually either through user traning or by a developer using the dpad. The default value for this property is NO, meaning a sliding window is used for the dpad.
     */
    reportsAbsoluteDpadValues(): boolean;
    setReportsAbsoluteDpadValues$(value: boolean): void;
    /**
     * Allows the Micro profile to monitor the orientation of the controller, if the controller is positioned in landscape orientation, D-pad input values will be transposed 90 degrees to match the new orientation. The default value for this property is NO.
     */
    allowsRotation(): boolean;
    setAllowsRotation$(value: boolean): void;
}
