import * as React from "react";
import { PerseusI18nContext } from "../../components/i18n-context";
import type { FocusPath, Widget, WidgetProps } from "../../types";
import type { MatrixPromptJSON } from "../../widget-ai-utils/matrix/matrix-ai-utils";
import type { MatrixPublicWidgetOptions, PerseusMatrixUserInput, PerseusMatrixWidgetOptions } from "@khanacademy/perseus-core";
type Props = WidgetProps<MatrixPublicWidgetOptions, PerseusMatrixUserInput>;
type DefaultProps = {
    matrixBoardSize: Props["matrixBoardSize"];
    prefix: string;
    suffix: string;
    apiOptions: Props["apiOptions"];
    linterContext: Props["linterContext"];
    userInput: PerseusMatrixUserInput;
};
type State = {
    cursorPosition: ReadonlyArray<number>;
    enterTheMatrix: number;
};
declare class Matrix extends React.Component<Props, State> implements Widget {
    static contextType: React.Context<import("../../components/i18n-context").I18nContextType>;
    context: React.ContextType<typeof PerseusI18nContext>;
    cursorPosition: [number, number];
    static defaultProps: DefaultProps;
    state: State;
    componentDidMount(): void;
    getInputPaths: () => ReadonlyArray<ReadonlyArray<string>>;
    _handleFocus: (arg1: any, arg2: any) => void;
    _handleBlur: (arg1: any, arg2: any) => void;
    focus: () => boolean;
    focusInputPath: (arg1: any) => void;
    blurInputPath: (arg1: any) => void;
    getDOMNodeForPath(path: FocusPath): Element | Text | null;
    handleKeyDown: (arg1: any, arg2: any, arg3: any) => void;
    onValueChange: (arg1: any, arg2: any, arg3: any, arg4: any) => void;
    getPromptJSON(): MatrixPromptJSON;
    /**
     * @deprecated and likely very broken API
     * [LEMS-3185] do not trust serializedState
     */
    getSerializedState(): any;
    render(): React.ReactNode;
}
declare function getStartUserInput(): PerseusMatrixUserInput;
declare function getCorrectUserInput(options: PerseusMatrixWidgetOptions): PerseusMatrixUserInput;
/**
 * @deprecated and likely a very broken API
 * [LEMS-3185] do not trust serializedState
 */
declare function getUserInputFromSerializedState(serializedState: any): PerseusMatrixUserInput;
declare const _default: {
    name: string;
    displayName: string;
    hidden: true;
    widget: typeof Matrix;
    isLintable: true;
    getStartUserInput: typeof getStartUserInput;
    getCorrectUserInput: typeof getCorrectUserInput;
    getUserInputFromSerializedState: typeof getUserInputFromSerializedState;
};
export default _default;
