import { vec } from "mafs"; import type { SnapTo } from "./types"; import type { Coord } from "../../interactive2/types"; import type { AxisLabelLocation, CollinearTuple, LockedFigureColor, LockedFigureFillType, LockedLineStyle, MarkingsType, PerseusRenderer, StrokeWeight } from "@khanacademy/perseus-core"; export type LockedFunctionOptions = { color?: LockedFigureColor; strokeStyle?: LockedLineStyle; weight?: StrokeWeight; directionalAxis?: "x" | "y"; domain?: [min: number, max: number]; labels?: LockedFigureLabelOptions[]; ariaLabel?: string; }; type LockedFigureLabelOptions = { text: string; coord?: Coord; size?: "small" | "medium" | "large"; }; export declare function interactiveGraphQuestionBuilder(): InteractiveGraphQuestionBuilder; declare class InteractiveGraphQuestionBuilder { private content; private fullGraphAriaLabel?; private fullGraphAriaDescription?; private backgroundImage?; private gridStep; private labels; private labelLocation; private markings; private xRange; private yRange; private showAxisArrows; private snapStep; private tickStep; private showProtractor; private showTooltips; private interactiveFigureConfig; private lockedFigures; private snapTo; private staticMode; build(): PerseusRenderer; withContent(content: string): InteractiveGraphQuestionBuilder; withFullGraphAriaLabel(label: string): InteractiveGraphQuestionBuilder; withFullGraphAriaDescription(description: string): InteractiveGraphQuestionBuilder; withTooltips(showTooltips: boolean): InteractiveGraphQuestionBuilder; withStaticMode(staticMode: boolean): InteractiveGraphQuestionBuilder; withBackgroundImage(url: string, height: number, width: number, options?: { scale?: number; bottom?: number; left?: number; right?: number; top?: number; }): InteractiveGraphQuestionBuilder; withGridStep(x: number, y: number): InteractiveGraphQuestionBuilder; withAxisLabels(x: string, y: string): InteractiveGraphQuestionBuilder; withLabelLocation(labelLocation: AxisLabelLocation): InteractiveGraphQuestionBuilder; withMarkings(markings: MarkingsType): InteractiveGraphQuestionBuilder; withXRange(min: number, max: number): InteractiveGraphQuestionBuilder; withYRange(min: number, max: number): InteractiveGraphQuestionBuilder; withShowAxisArrows({ xMin, xMax, yMin, yMax, }: { xMin?: boolean; xMax?: boolean; yMin?: boolean; yMax?: boolean; }): InteractiveGraphQuestionBuilder; withSnapStep(x: number, y: number): InteractiveGraphQuestionBuilder; withTickStep(x: number, y: number): InteractiveGraphQuestionBuilder; withProtractor(): InteractiveGraphQuestionBuilder; withSegments(options?: { numSegments?: number; startCoords?: CollinearTuple[]; coords?: CollinearTuple[]; }): InteractiveGraphQuestionBuilder; withNoInteractiveFigure(): this; withLinear(options?: { coords?: CollinearTuple; startCoords?: CollinearTuple; }): InteractiveGraphQuestionBuilder; withLinearSystem(options?: { coords?: CollinearTuple[]; startCoords?: CollinearTuple[]; }): InteractiveGraphQuestionBuilder; withRay(options?: { coords?: CollinearTuple; startCoords?: CollinearTuple; }): InteractiveGraphQuestionBuilder; withCircle(options?: { center?: Coord; radius?: number; startCoords?: { center: Coord; radius: number; }; }): InteractiveGraphQuestionBuilder; withQuadratic(options?: { coords?: [Coord, Coord, Coord]; startCoords?: [Coord, Coord, Coord]; }): InteractiveGraphQuestionBuilder; withSinusoid(options?: { coords?: [Coord, Coord]; startCoords?: [Coord, Coord]; }): InteractiveGraphQuestionBuilder; withPolygon(snapTo?: SnapTo, options?: { match?: "similar" | "congruent" | "approx"; numSides?: number | "unlimited"; showAngles?: boolean; showSides?: boolean; coords?: Coord[]; startCoords?: Coord[]; }): InteractiveGraphQuestionBuilder; withPoints(numPoints: number | "unlimited", options?: { coords?: Coord[]; startCoords?: Coord[]; }): InteractiveGraphQuestionBuilder; withAngle(options?: { coords?: [Coord, Coord, Coord]; startCoords?: [Coord, Coord, Coord]; showAngles?: boolean; allowReflexAngles?: boolean; angleOffsetDeg?: number; snapDegrees?: number; match?: "congruent"; }): InteractiveGraphQuestionBuilder; addLockedPointAt(x: number, y: number, options?: { color?: LockedFigureColor; filled?: boolean; labels?: LockedFigureLabelOptions[]; ariaLabel?: string; }): InteractiveGraphQuestionBuilder; addLockedLine(point1: vec.Vector2, point2: vec.Vector2, options?: { kind?: "line" | "ray" | "segment"; lineStyle?: LockedLineStyle; color?: LockedFigureColor; filled?: [boolean, boolean]; showPoint1?: boolean; showPoint2?: boolean; weight?: StrokeWeight; labels?: LockedFigureLabelOptions[]; ariaLabel?: string; }): InteractiveGraphQuestionBuilder; addLockedVector(tail: vec.Vector2, tip: vec.Vector2, options?: { color?: LockedFigureColor; labels?: LockedFigureLabelOptions[]; weight?: StrokeWeight; ariaLabel?: string; }): InteractiveGraphQuestionBuilder; addLockedEllipse(center: vec.Vector2, radius: [x: number, y: number], options?: { angle?: number; color?: LockedFigureColor; fillStyle?: LockedFigureFillType; strokeStyle?: "solid" | "dashed"; weight?: StrokeWeight; labels?: LockedFigureLabelOptions[]; ariaLabel?: string; }): InteractiveGraphQuestionBuilder; addLockedPolygon(points: vec.Vector2[], options?: { color?: LockedFigureColor; showVertices?: boolean; fillStyle?: LockedFigureFillType; strokeStyle?: LockedLineStyle; weight?: StrokeWeight; labels?: LockedFigureLabelOptions[]; ariaLabel?: string; }): InteractiveGraphQuestionBuilder; addLockedFunction(equation: string, options?: LockedFunctionOptions): this; addLockedLabel(text: string, coord: Coord, options?: { color?: LockedFigureColor; size?: "small" | "medium" | "large"; }): this; private createLockedPoint; private addLockedFigure; } export {};