import * as React from "react";
import type { Widget, WidgetProps, FocusPath } from "../../types";
import type { PerseusExpressionRubric, PerseusExpressionUserInput, PerseusExpressionWidgetOptions } from "@khanacademy/perseus-core";
type ExternalProps = WidgetProps<PerseusExpressionWidgetOptions, PerseusExpressionUserInput>;
export declare const Expression: React.ForwardRefExoticComponent<PerseusExpressionWidgetOptions & {
    trackInteraction: (extraData?: Empty | undefined) => void;
    widgetId: string;
    widgetIndex: number;
    alignment: string | null | undefined;
    static: boolean | null | undefined;
    graded?: boolean | null;
    problemNum: number | null | undefined;
    apiOptions: Readonly<Readonly<{
        isArticle?: boolean;
        onFocusChange?: (newFocusPath: FocusPath, oldFocusPath: FocusPath, keypadHeight?: number, focusedElement?: HTMLElement) => unknown;
        showAlignmentOptions?: boolean;
        readOnly?: boolean;
        editingDisabled?: boolean;
        answerableCallback?: (arg1: boolean) => unknown;
        getAnotherHint?: () => unknown;
        interactionCallback?: (widgetData: {
            [widgetId: string]: any;
        }) => void;
        imagePlaceholder?: React.ReactNode;
        widgetPlaceholder?: React.ReactNode;
        baseElements?: {
            Link: React.ComponentType<any>;
        };
        imagePreloader?: (dimensions: import("../../types").Dimensions) => React.ReactNode;
        trackInteraction?: (args: {
            type: string;
            id: string;
            correct?: boolean;
        } & Partial<import("../../types").TrackingGradedGroupExtraArguments> & Partial<{
            visible: number;
        }>) => void;
        customKeypad?: boolean;
        nativeKeypadProxy?: (blur: () => void) => import("@khanacademy/math-input").KeypadAPI;
        isMobile?: boolean;
        isMobileApp?: boolean;
        setDrawingAreaAvailable?: (arg1: boolean) => unknown;
        hintProgressColor?: string;
        canScrollPage?: boolean;
        editorChangeDelay?: number;
        flags?: Record<"image-widget-upgrade-gif-controls" | "input-number-to-numeric-input", boolean>;
    }> & {
        baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
        canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
        editorChangeDelay: NonNullable<import("../..").APIOptions["editorChangeDelay"]>;
        isArticle: NonNullable<import("../..").APIOptions["isArticle"]>;
        isMobile: NonNullable<import("../..").APIOptions["isMobile"]>;
        isMobileApp: NonNullable<import("../..").APIOptions["isMobileApp"]>;
        editingDisabled: NonNullable<import("../..").APIOptions["editingDisabled"]>;
        onFocusChange: NonNullable<import("../..").APIOptions["onFocusChange"]>;
        readOnly: NonNullable<import("../..").APIOptions["readOnly"]>;
        setDrawingAreaAvailable: NonNullable<import("../..").APIOptions["setDrawingAreaAvailable"]>;
        showAlignmentOptions: NonNullable<import("../..").APIOptions["showAlignmentOptions"]>;
    }>;
    keypadElement?: any;
    onFocus: (blurPath: FocusPath) => void;
    onBlur: (blurPath: FocusPath) => void;
    findWidgets: import("../../types").FindWidgetsFunction;
    reviewMode: boolean;
    showSolutions?: import("@khanacademy/perseus-core").ShowSolutions;
    handleUserInput: (newUserInput: string, cb?: () => void, silent?: boolean) => void;
    userInput: string;
    linterContext: import("@khanacademy/perseus-linter").LinterContextProps;
    containerSizeClass: import("../../util/sizing-utils").SizeClass;
} & {
    buttonSets: NonNullable<ExternalProps["buttonSets"]>;
    functions: NonNullable<ExternalProps["functions"]>;
    times: NonNullable<ExternalProps["times"]>;
} & React.RefAttributes<Widget>>;
/**
 * @deprecated and likely a very broken API
 * [LEMS-3185] do not trust serializedState
 */
declare function getUserInputFromSerializedState(serializedState: any): PerseusExpressionUserInput;
declare function getStartUserInput(): PerseusExpressionUserInput;
declare function getOneCorrectAnswerFromRubric(rubric: PerseusExpressionRubric): string | null | undefined;
declare function getCorrectUserInput(options: PerseusExpressionWidgetOptions): PerseusExpressionUserInput;
declare const _default: {
    name: string;
    displayName: string;
    widget: React.ForwardRefExoticComponent<PerseusExpressionWidgetOptions & {
        trackInteraction: (extraData?: Empty | undefined) => void;
        widgetId: string;
        widgetIndex: number;
        alignment: string | null | undefined;
        static: boolean | null | undefined;
        graded?: boolean | null;
        problemNum: number | null | undefined;
        apiOptions: Readonly<Readonly<{
            isArticle?: boolean;
            onFocusChange?: (newFocusPath: FocusPath, oldFocusPath: FocusPath, keypadHeight?: number, focusedElement?: HTMLElement) => unknown;
            showAlignmentOptions?: boolean;
            readOnly?: boolean;
            editingDisabled?: boolean;
            answerableCallback?: (arg1: boolean) => unknown;
            getAnotherHint?: () => unknown;
            interactionCallback?: (widgetData: {
                [widgetId: string]: any;
            }) => void;
            imagePlaceholder?: React.ReactNode;
            widgetPlaceholder?: React.ReactNode;
            baseElements?: {
                Link: React.ComponentType<any>;
            };
            imagePreloader?: (dimensions: import("../../types").Dimensions) => React.ReactNode;
            trackInteraction?: (args: {
                type: string;
                id: string;
                correct?: boolean;
            } & Partial<import("../../types").TrackingGradedGroupExtraArguments> & Partial<{
                visible: number;
            }>) => void;
            customKeypad?: boolean;
            nativeKeypadProxy?: (blur: () => void) => import("@khanacademy/math-input").KeypadAPI;
            isMobile?: boolean;
            isMobileApp?: boolean;
            setDrawingAreaAvailable?: (arg1: boolean) => unknown;
            hintProgressColor?: string;
            canScrollPage?: boolean;
            editorChangeDelay?: number;
            flags?: Record<"image-widget-upgrade-gif-controls" | "input-number-to-numeric-input", boolean>;
        }> & {
            baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
            canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
            editorChangeDelay: NonNullable<import("../..").APIOptions["editorChangeDelay"]>;
            isArticle: NonNullable<import("../..").APIOptions["isArticle"]>;
            isMobile: NonNullable<import("../..").APIOptions["isMobile"]>;
            isMobileApp: NonNullable<import("../..").APIOptions["isMobileApp"]>;
            editingDisabled: NonNullable<import("../..").APIOptions["editingDisabled"]>;
            onFocusChange: NonNullable<import("../..").APIOptions["onFocusChange"]>;
            readOnly: NonNullable<import("../..").APIOptions["readOnly"]>;
            setDrawingAreaAvailable: NonNullable<import("../..").APIOptions["setDrawingAreaAvailable"]>;
            showAlignmentOptions: NonNullable<import("../..").APIOptions["showAlignmentOptions"]>;
        }>;
        keypadElement?: any;
        onFocus: (blurPath: FocusPath) => void;
        onBlur: (blurPath: FocusPath) => void;
        findWidgets: import("../../types").FindWidgetsFunction;
        reviewMode: boolean;
        showSolutions?: import("@khanacademy/perseus-core").ShowSolutions;
        handleUserInput: (newUserInput: string, cb?: () => void, silent?: boolean) => void;
        userInput: string;
        linterContext: import("@khanacademy/perseus-linter").LinterContextProps;
        containerSizeClass: import("../../util/sizing-utils").SizeClass;
    } & {
        buttonSets: NonNullable<ExternalProps["buttonSets"]>;
        functions: NonNullable<ExternalProps["functions"]>;
        times: NonNullable<ExternalProps["times"]>;
    } & React.RefAttributes<Widget>>;
    version: import("@khanacademy/perseus-core").Version | undefined;
    isLintable: true;
    getOneCorrectAnswerFromRubric: typeof getOneCorrectAnswerFromRubric;
    getStartUserInput: typeof getStartUserInput;
    getCorrectUserInput: typeof getCorrectUserInput;
    getUserInputFromSerializedState: typeof getUserInputFromSerializedState;
};
export default _default;
