import { PerseusExpressionAnswerFormConsidered } from "@khanacademy/perseus-core";
import * as React from "react";
import type { PerseusExpressionWidgetOptions, ExpressionDefaultWidgetOptions, PerseusExpressionUserInput } from "@khanacademy/perseus-core";
type Props = {
    widgetId?: string;
    value?: string;
    onChange: (newValues: Partial<PerseusExpressionWidgetOptions>) => void;
} & Omit<PerseusExpressionWidgetOptions, "buttonsVisible">;
type AnswerForm = PerseusExpressionWidgetOptions["answerForms"][number];
type State = {
    functionsInternal: string;
};
/**
 * An editor for adding an expression widget that allows users to enter mathematical expressions.
 */
declare class ExpressionEditor extends React.Component<Props, State> {
    static widgetName: "expression";
    static defaultProps: ExpressionDefaultWidgetOptions;
    constructor(props: Props);
    serialize(): PerseusExpressionWidgetOptions;
    getSaveWarnings: () => any;
    newAnswer: () => void;
    handleRemoveForm: (answerKey: number) => void;
    updateAnswerForm(index: number, answerFormProps: AnswerForm): void;
    handleButtonSet: (changingName: string) => void;
    handleToggleDiv: () => void;
    handleTexInsert: (arg1: string) => void;
    handleFunctions: (value: string) => void;
    handleVisibleLabel: (visibleLabel: string) => void;
    handleAriaLabel: (ariaLabel: string) => void;
    changeSimplify(index: number, simplify: boolean): void;
    changeForm(index: number, form: boolean): void;
    changeConsidered(index: number, considered: (typeof PerseusExpressionAnswerFormConsidered)[number]): void;
    changeTimes(times: boolean): void;
    changeExpressionWidget: (index: number, input: PerseusExpressionUserInput) => void;
    render(): React.ReactNode;
}
export default ExpressionEditor;
