import type { Coord } from "../../../interactive2/types";
import type { InteractiveGraphState, PairOfPoints } from "../types";
import type { PerseusGraphType, PerseusGraphTypeAbsoluteValue, PerseusGraphTypeAngle, PerseusGraphTypeCircle, PerseusGraphTypeLinear, PerseusGraphTypeLinearSystem, PerseusGraphTypePoint, PerseusGraphTypePolygon, PerseusGraphTypeQuadratic, PerseusGraphTypeRay, PerseusGraphTypeSegment, PerseusGraphTypeSinusoid, PerseusGraphTypeExponential, PerseusGraphTypeTangent, PerseusGraphTypeLogarithm, PerseusGraphTypeVector } from "@khanacademy/perseus-core";
import type { Interval } from "mafs";
export type InitializeGraphStateParams = {
    range: [x: Interval, y: Interval];
    step: [x: number, y: number];
    snapStep: [x: number, y: number];
    graph: PerseusGraphType;
};
export declare function initializeGraphState(params: InitializeGraphStateParams): InteractiveGraphState;
export declare function getPointCoords(graph: PerseusGraphTypePoint, range: [x: Interval, y: Interval], step: [x: number, y: number]): Coord[];
export declare function getSegmentCoords(graph: PerseusGraphTypeSegment, range: [x: Interval, y: Interval], step: [x: number, y: number]): PairOfPoints[];
export declare function getLineCoords(graph: PerseusGraphTypeRay | PerseusGraphTypeLinear, range: [x: Interval, y: Interval], step: [x: number, y: number]): PairOfPoints;
export declare function getVectorCoords(graph: PerseusGraphTypeVector, range: [x: Interval, y: Interval], step: [x: number, y: number]): PairOfPoints;
export declare function getLinearSystemCoords(graph: PerseusGraphTypeLinearSystem, range: [x: Interval, y: Interval], step: [x: number, y: number]): PairOfPoints[];
export declare function getPolygonCoords(graph: PerseusGraphTypePolygon, range: [x: Interval, y: Interval], step: [x: number, y: number]): Coord[];
export declare function getSinusoidCoords(graph: PerseusGraphTypeSinusoid, range: [x: Interval, y: Interval], step: [x: number, y: number]): [Coord, Coord];
export declare function getAbsoluteValueCoords(graph: PerseusGraphTypeAbsoluteValue, range: [x: Interval, y: Interval], step: [x: number, y: number]): [Coord, Coord];
export declare function getTangentCoords(graph: PerseusGraphTypeTangent, range: [x: Interval, y: Interval], step: [x: number, y: number]): [Coord, Coord];
export declare function getQuadraticCoords(graph: PerseusGraphTypeQuadratic, range: [x: Interval, y: Interval], step: [x: number, y: number]): [Coord, Coord, Coord];
export declare function getCircleCoords(graph: PerseusGraphTypeCircle): {
    center: Coord;
    radiusPoint: Coord;
};
export declare function getExponentialCoords(graph: PerseusGraphTypeExponential, range: [x: Interval, y: Interval], step: [x: number, y: number]): {
    coords: [Coord, Coord];
    asymptote: number;
};
export declare function getLogarithmCoords(graph: PerseusGraphTypeLogarithm, range: [x: Interval, y: Interval], step: [x: number, y: number]): {
    coords: [Coord, Coord];
    asymptote: number;
};
export declare const getAngleCoords: (params: {
    graph: PerseusGraphTypeAngle;
    range: [x: Interval, y: Interval];
    step: [x: number, y: number];
}) => [Coord, Coord, Coord];
