import type { PerseusStrings } from "../../../../strings";
import type { vec } from "mafs";
export declare function resolvePointLabel(pointLabels: ReadonlyArray<string> | undefined, index: number): string | number;
/**
 * Returns a screen-reader aria-label for an interactive point using a
 * custom label (e.g. "T"). Returns `undefined` when no custom label
 * is set so callers can fall back to the default label (e.g. "Point 1",
 * "Point 2", ...) built by `useControlPoint`.
 *
 * Prefer `usePointAriaLabel` in React components — it binds `strings` and
 * `locale` from `usePerseusI18n()` so call sites read `buildLabel(i, point)`.
 * Use `buildPointAriaLabel` directly only from non-React functions (e.g.
 * graph-description helpers) that already receive `strings` / `locale` as
 * parameters and therefore can't use a hook.
 */
export declare function buildPointAriaLabel(pointLabels: ReadonlyArray<string> | undefined, index: number, point: vec.Vector2, strings: PerseusStrings, locale: string): string | undefined;
/**
 * Hook that returns a point aria-label builder bound to the current locale
 * and the given `pointLabels`. Returns `undefined` for points without a
 * custom label so callers can fall back to default labels.
 */
export declare function usePointAriaLabel(pointLabels: ReadonlyArray<string> | undefined): (index: number, point: vec.Vector2) => string | undefined;
