import * as React from "react";
import ReactDOM from "react-dom";
import type { Cursor, KeyHandler, KeypadAPI } from "../../types";
import type { AnalyticsEventHandlerFn, KeypadConfiguration, KeypadKey } from "@khanacademy/perseus-core";
import type { StyleType } from "@khanacademy/wonder-blocks-core";
type Props = {
    onElementMounted?: (arg1: any) => void;
    onDismiss?: () => void;
    style?: StyleType;
    onAnalyticsEvent: AnalyticsEventHandlerFn;
    setKeypadActive: (keypadActive: boolean) => void;
    keypadActive: boolean;
};
type State = {
    containerWidth: number;
    keypadConfig?: KeypadConfiguration;
    keyHandler?: KeyHandler;
    cursor?: Cursor;
};
/**
 * This is the v2 equivalent of v1's ProvidedKeypad. It follows the same
 * external API so that it can be hot-swapped with the v1 keypad and
 * is responsible for connecting the keypad with MathInput and the Renderer.
 *
 * Ideally this strategy of attaching methods on the class component for
 * other components to call will be replaced props/callbacks since React
 * doesn't support this type of code anymore (functional components
 * can't have methods attached to them).
 */
declare class MobileKeypadInternals extends React.Component<Props, State> implements KeypadAPI {
    _containerRef: React.RefObject<HTMLDivElement>;
    _containerResizeObserver: ResizeObserver | null;
    _throttleResize: boolean;
    state: State;
    componentDidMount(): void;
    componentWillUnmount(): void;
    _resize: () => void;
    _throttleResizeHandler: () => void;
    activate: () => void;
    dismiss: () => void;
    configure: (configuration: KeypadConfiguration, cb: () => void) => void;
    setCursor: (cursor: Cursor) => void;
    setKeyHandler: (keyHandler: KeyHandler) => void;
    getDOMNode: () => ReturnType<typeof ReactDOM.findDOMNode>;
    _handleClickKey(key: KeypadKey): void;
    render(): React.ReactNode;
}
export default MobileKeypadInternals;
