import { Component, ComponentProps } from '../core/Component.js';
import { State } from '../core/State.js';
export type MobileButtonId = 'btn-up' | 'btn-down' | 'btn-left' | 'btn-right' | 'btn-a' | 'btn-b' | 'btn-x' | 'btn-y' | 'btn-menu';
export interface MobileControllerProps extends ComponentProps {
    dpad?: {
        up?: () => void;
        down?: () => void;
        left?: () => void;
        right?: () => void;
    };
    buttons?: {
        a?: () => void;
        b?: () => void;
        x?: () => void;
        y?: () => void;
    };
    menu?: () => void;
    enabled?: State<boolean> | boolean;
    priority?: number;
}
export declare class MobileController extends Component {
    readonly priority: number;
    private disabledState?;
    private staticDisabled;
    private actionMap;
    private registrationAttempted;
    private timeoutId?;
    private destroyed;
    constructor(props: MobileControllerProps);
    get disabled(): boolean;
    /**
     * Handle a button press
     * @returns true if this controller handled the button, false otherwise
     */
    handleButton(buttonId: MobileButtonId): boolean;
    setParent(parent: Component): void;
    private registerWithApp;
    destroy(): void;
    private unregisterWithApp;
    draw(): string[][];
}
