import { vec } from "mafs";
import { type I18nContextType } from "../../../components/i18n-context";
import type { AbsoluteValueGraphState, Dispatch, InteractiveGraphElementSuite } from "../types";
import type { Coord } from "@khanacademy/perseus-core";
export declare function renderAbsoluteValueGraph(state: AbsoluteValueGraphState, dispatch: Dispatch, i18n: I18nContextType): InteractiveGraphElementSuite;
export type AbsoluteValueCoefficients = {
    m: number;
    h: number;
    v: number;
};
/**
 * Compute the coefficients [m, h, v] for f(x) = m * |x - h| + v from two
 * control points: p1 (vertex) and p2 (a point on one arm).
 *
 * Returns undefined if p1 and p2 share the same x-coordinate (slope undefined).
 */
export declare function getAbsoluteValueCoefficients(coords: ReadonlyArray<Coord>): AbsoluteValueCoefficients | undefined;
/**
 * Keyboard constraint for absolute value control points.
 * Skips any horizontal position where both points would share the same x.
 */
export declare const getAbsoluteValueKeyboardConstraint: (coords: ReadonlyArray<Coord>, snapStep: vec.Vector2, pointIndex: number) => {
    up: vec.Vector2;
    down: vec.Vector2;
    left: vec.Vector2;
    right: vec.Vector2;
};
