import * as React from "react";
import Graphie from "../../components/graphie";
import type { Coord } from "../../interactive2/types";
import type { Widget, WidgetProps } from "../../types";
import type { GridDimensions } from "../../util";
import type { GrapherPromptJSON } from "../../widget-ai-utils/grapher/grapher-ai-utils";
import type { PerseusGrapherWidgetOptions, PerseusGrapherUserInput, GrapherPublicWidgetOptions } from "@khanacademy/perseus-core";
import type { PropsFor } from "@khanacademy/wonder-blocks-core";
type Props = WidgetProps<PerseusGrapherWidgetOptions, PerseusGrapherUserInput>;
declare class Grapher extends React.Component<Props> implements Widget {
    horizHairline: any;
    vertHairline: any;
    handlePlotChanges: (arg1: any) => any;
    handleActiveTypeChange: (arg1: any) => any;
    _getGridConfig(options: Props["graph"] & {
        box: NonNullable<Props["graph"]["box"]>;
        gridStep: NonNullable<Props["graph"]["gridStep"]>;
    }): ReadonlyArray<GridDimensions>;
    _calculateMobileTickStep(gridStep: NonNullable<PropsFor<typeof Graphie>["gridStep"]>, step: NonNullable<PropsFor<typeof Graphie>["step"]>, ranges: NonNullable<PropsFor<typeof Graphie>["ranges"]>): any;
    _setupGraphie: (arg1: any, arg2: any) => void;
    showHairlines: (arg1: Coord) => void;
    hideHairlines: () => void;
    getPromptJSON(): GrapherPromptJSON;
    /**
     * @deprecated and likely very broken API
     * [LEMS-3185] do not trust serializedState
     */
    getSerializedState(): {
        plot: import("@khanacademy/perseus-core").GrapherAnswerTypes;
        availableTypes: Array<"absolute_value" | "exponential" | "linear" | "logarithm" | "quadratic" | "sinusoid" | "tangent">;
        graph: {
            backgroundImage: {
                bottom?: number;
                height?: number;
                left?: number;
                scale?: number;
                url?: string | null | undefined;
                width?: number;
            };
            box?: [number, number];
            editableSettings?: Array<"graph" | "snap" | "image" | "measure">;
            gridStep?: [number, number];
            labels: [string, string];
            markings: import("@khanacademy/perseus-core").MarkingsType;
            range: import("@khanacademy/perseus-core").GraphRange;
            rulerLabel: "";
            rulerTicks: number;
            showProtractor?: boolean;
            showRuler?: boolean;
            showTooltips?: boolean;
            snapStep?: [number, number];
            step: [number, number];
            valid?: boolean | string;
        };
        trackInteraction: (extraData?: Empty | undefined) => void;
        widgetId: string;
        widgetIndex: number;
        alignment: string | null | undefined;
        static: boolean | null | undefined;
        problemNum: number | null | undefined;
        apiOptions: Readonly<Readonly<{
            isArticle?: boolean;
            onFocusChange?: (newFocusPath: import("../..").FocusPath, oldFocusPath: import("../..").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<"new-radio-widget" | "image-widget-upgrade", 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;
        questionCompleted?: boolean;
        onFocus: (blurPath: import("../..").FocusPath) => void;
        onBlur: (blurPath: import("../..").FocusPath) => void;
        findWidgets: (criterion: import("../../types").FilterCriterion) => ReadonlyArray<Widget>;
        reviewMode: boolean;
        showSolutions?: import("@khanacademy/perseus-core").ShowSolutions;
        handleUserInput: (newUserInput: import("@khanacademy/perseus-core").GrapherAnswerTypes, cb?: () => void, silent?: boolean) => void;
        linterContext: import("@khanacademy/perseus-linter").LinterContextProps;
        containerSizeClass: import("../../util/sizing-utils").SizeClass;
    };
    render(): React.ReactNode;
}
/**
 * @deprecated and likely a very broken API
 * [LEMS-3185] do not trust serializedState
 */
declare function getUserInputFromSerializedState(serializedState: any): PerseusGrapherUserInput;
declare function getStartUserInput(options: GrapherPublicWidgetOptions): PerseusGrapherUserInput;
declare function getCorrectUserInput(options: PerseusGrapherWidgetOptions): PerseusGrapherUserInput;
declare const _default: {
    name: string;
    displayName: string;
    hidden: true;
    widget: typeof Grapher;
    getUserInputFromSerializedState: typeof getUserInputFromSerializedState;
    getStartUserInput: typeof getStartUserInput;
    getCorrectUserInput: typeof getCorrectUserInput;
};
export default _default;
