import type interactiveGraph from "../../widgets/interactive-graphs/interactive-graph";
import type { UnsupportedWidgetPromptJSON } from "../unsupported-widget";
import type { PerseusGraphType } from "@khanacademy/perseus-core";
import type React from "react";
type Coord = [x: number, y: number];
type CollinearTuple = readonly [Coord, Coord];
type BaseGraphOptions = {
    type: string;
};
type AngleGraphOptions = BaseGraphOptions & {
    angleOffsetDegrees: number;
    startCoords?: readonly [Coord, Coord, Coord];
};
type CircleGraphOptions = BaseGraphOptions & {
    startParams: {
        center?: Coord;
        radius?: number;
    };
};
type LinearGraphOptions = BaseGraphOptions & {
    startCoords?: CollinearTuple;
};
type LinearSystemGraphOptions = BaseGraphOptions & {
    startCoords?: readonly CollinearTuple[];
};
type PointGraphOptions = BaseGraphOptions & {
    numPoints?: number | "unlimited";
    startCoords?: readonly Coord[];
};
type PolygonGraphOptions = BaseGraphOptions & {
    match?: string;
    numSides?: number | "unlimited";
    startCoords?: readonly Coord[];
};
type QuadraticGraphOptions = BaseGraphOptions & {
    startCoords?: readonly [Coord, Coord, Coord];
};
type RayGraphOptions = BaseGraphOptions & {
    startCoords?: CollinearTuple;
};
type SegmentGraphOptions = BaseGraphOptions & {
    numSegments?: number;
    startCoords?: CollinearTuple;
};
type SinusoidGraphOptions = BaseGraphOptions & {
    startCoords?: readonly Coord[];
};
type NoneGraphOptions = Record<string, never>;
type GraphOptions = AngleGraphOptions | CircleGraphOptions | LinearGraphOptions | LinearSystemGraphOptions | NoneGraphOptions | PointGraphOptions | PolygonGraphOptions | QuadraticGraphOptions | RayGraphOptions | SegmentGraphOptions | SinusoidGraphOptions;
type AngleUserInput = {
    coords?: readonly [Coord, Coord, Coord];
    angleOffsetDegrees?: number;
};
type CircleUserInput = {
    center?: Coord;
    radius?: number;
};
type LinearUserInput = {
    coords?: CollinearTuple;
};
type LinearSystemInput = {
    coords?: readonly CollinearTuple[] | null;
};
type PointUserInput = {
    coords?: readonly Coord[] | null;
};
type PolygonUserInput = {
    coords?: readonly Coord[] | null;
};
type QuadraticUserInput = {
    coords?: readonly [Coord, Coord, Coord] | null;
};
type RayUserInput = {
    coords?: CollinearTuple | null;
};
type SegmentUserInput = {
    coords?: readonly CollinearTuple[] | null;
};
type SinusoidUserInput = {
    coords?: readonly Coord[] | null;
};
type UserInput = AngleUserInput | CircleUserInput | LinearUserInput | LinearSystemInput | PointUserInput | PolygonUserInput | QuadraticUserInput | RayUserInput | SegmentUserInput | SinusoidUserInput;
export type InteractiveGraphPromptJSON = {
    type: "interactive-graph";
    options: {
        graph: GraphOptions;
        backgroundImageUrl: string | null | undefined;
        range: [min: number, max: number][];
        labels: ReadonlyArray<string>;
    };
    userInput: UserInput;
};
export declare const getPromptJSON: (props: React.ComponentProps<typeof interactiveGraph.widget>, userInput: PerseusGraphType) => InteractiveGraphPromptJSON | UnsupportedWidgetPromptJSON;
export {};
