import { WatchArea } from '../navigation-instruments/watch/watch.js';
export interface ArcViewBox {
    x: number;
    y: number;
    width: number;
    height: number;
    viewBox: string;
}
export interface ZoomToFitArcFrame extends ArcViewBox {
    radiusOffset: number;
}
/**
 * Compute the optimal radius enlargement and square viewBox so that a
 * partial-arc watch face fills its container instead of leaving empty space.
 *
 * When `zoomToFitArc` is enabled on a clipped watch (e.g. rudder ±45°), the
 * visible arc segment is small relative to the full circle — lots of space
 * is wasted. This function finds a `radiusOffset` that, when added to every
 * radius constant, enlarges the circle so the visible band fills the target
 * viewport. Band thickness, tickmark sizes, and all decorative elements
 * remain unchanged in SVG units; only the curvature flattens because the
 * radius is larger.
 *
 * Uses binary search over `radiusOffset` so that the bounding box of the
 * annular arc (outer + extension … inner) fits within `targetSize × (1 − 2 × margin)`.
 *
 * @param options.areas       Visible arc segments (same array passed to `<obc-watch>`).
 * @param options.outerRadius Base outer ring radius (typically `OUTER_RING_RADIUS`).
 * @param options.innerRadius Base innermost visible radius (depends on `WatchCircleType`).
 * @param options.extension   Extra radial room beyond outer for tickmarks/labels.
 * @param options.targetSize  Default SVG viewport side length, e.g. `(176 + padding) * 2`.
 * @param options.margin      Fraction of computed extent used as padding (default 0.06).
 */
export declare function computeZoomToFitArcFrame(options: {
    areas: WatchArea[];
    outerRadius: number;
    innerRadius: number;
    extension: number;
    targetSize: number;
    margin?: number;
}): ZoomToFitArcFrame;
//# sourceMappingURL=arc-frame.d.ts.map