import { Changeable } from "@khanacademy/perseus";
import { type Coords, type InteractionDefaultWidgetOptions, type MarkingsType } from "@khanacademy/perseus-core";
import * as React from "react";
type Graph = {
    box: ReadonlyArray<number>;
    labels: ReadonlyArray<string>;
    range: Coords;
    tickStep: [number, number];
    gridStep: [number, number];
    markings: MarkingsType;
    valid?: boolean;
};
type Props = Changeable.ChangeableProps & {
    elements: ReadonlyArray<any>;
    graph: Graph;
};
type State = any;
/**
 * An editor for the interaction widget that allows users to engage with interactive content.
 *
 * The interaction widget provides a dynamic graph interface with various interactive elements
 * including points, lines, movable points, movable lines, functions, parametric curves,
 * labels, and rectangles. This editor allows content creators to configure those elements
 * and their properties.
 */
declare class InteractionEditor extends React.Component<Props, State> {
    static widgetName: "interaction";
    static defaultProps: InteractionDefaultWidgetOptions;
    state: State;
    UNSAFE_componentWillReceiveProps(nextProps: Props): void;
    _getAllVarSubscripts(elements: ReadonlyArray<any>): ReadonlyArray<any>;
    _getAllFunctionNames(elements: ReadonlyArray<any>): ReadonlyArray<string>;
    _updateGraphProps: (arg1: any) => any;
    _addNewElement: (arg1: React.ChangeEvent<HTMLInputElement>) => void;
    _deleteElement: (arg1: number) => void;
    _moveElementUp: (arg1: number) => void;
    _moveElementDown: (arg1: number) => void;
    change: (arg1: any, arg2: any, arg3: any) => any;
    serialize: () => any;
    render(): React.ReactNode;
}
export default InteractionEditor;
