import { SVGTemplateResult } from 'lit-html';
export interface RenderLabelsOptions {
    scale: number;
    rotation: number | undefined;
    /** When true, labels are placed inside the inner ring. */
    inside?: boolean;
    /** Inner ring radius used for inside label positioning (default: OUTER_RING_RADIUS). */
    innerRadius?: number;
    /** When true, always include the "N" label regardless of scale/inside heuristic. */
    includeNorth?: boolean;
}
/** Position data for a single compass label. */
export interface LabelPosition {
    label: string;
    x: number;
    y: number;
}
/**
 * Computes the centre positions for NSEW compass labels.
 *
 * These positions are used both for rendering the labels themselves
 * and for building a crosshair knockout mask so the crosshair doesn't
 * bleed through the text.
 */
export declare function getLabelPositions(opts: {
    scale: number;
    inside: boolean;
    innerRadius: number;
    /** When true, always include the "N" label regardless of scale/inside heuristic. */
    includeNorth?: boolean;
}): LabelPosition[];
/**
 * Renders the compass NSEW text labels (without the north arrow).
 *
 * When `inside` is false (default), labels sit outside the outer ring.
 * When `inside` is true, labels are positioned inside the ring.
 *
 * At small scales (< 0.58, roughly < 292 px), an "N" label is added
 * since the decorative north arrow is replaced by a compact triangle
 * that doesn't contain a letter.
 */
export declare function renderLabels(scaleOrOpts: number | RenderLabelsOptions, rotation?: number | undefined): SVGTemplateResult;
export interface RenderNorthArrowOptions {
    scale: number;
    rotation: number | undefined;
    /** When true, the arrow is placed inside the outer ring. */
    inside?: boolean;
}
/**
 * Renders the north arrow indicator for compass instruments.
 *
 * - **Outside (default)**: Large decorative triangle above the ring with an
 *   "N" glyph overlaid on the ring edge. At small scales (< 0.58), falls
 *   back to a compact triangle at the ring boundary.
 * - **Inside**: Small triangle at the outer ring boundary pointing inward
 *   (same as the watch `northArrow` indicator). At small scales, uses the
 *   same compact triangle, positioned inside.
 */
export declare function renderNorthArrow(opts: RenderNorthArrowOptions): SVGTemplateResult;
//# sourceMappingURL=label.d.ts.map