/** * The donut geometry shared by the `ring` chart and the head ring. * * Extracted so the head ring (`WidgetRenderOut.headRing`) and the body ring * (`chart.kind === 'ring'`) cannot drift apart: both draw the same track, the same * round-capped progress arc from 12 o'clock, and the same centred middle slot. * Every number is caller-supplied, so the body ring keeps its exact shipped * geometry (radius 22·scale, inset 2, stroke 3, a 13·scale text label). * * NOT shared with `rings.tsx` (the multi-ring row): those deliberately have NO * middle content, a thicker stroke, a width-derived radius and their percent * printed UNDER each ring — sharing this component would change them, not unify * them. */ import * as React from 'react'; /** What a donut needs to draw itself. */ export interface DonutProps { /** Outer radius in px (the box is `round(radius * 2)` square). */ radius: number; /** Fraction filled, 0..1 (clamped; NaN draws an empty ring). */ ratio: number; /** Arc colour token name; defaults to brand blue. */ tone?: string; /** Arc thickness (px). */ stroke?: number; /** Distance from the box edge to the ring's centerline (px). */ inset?: number; /** Middle content (a text label, an icon, or nothing). */ center?: React.ReactNode; /** Hover text for the whole ring (the precise figure, never drawn). */ title?: string; /** Minimum daylight (px) between the two round caps below 100%; scaled by caller. * See `cappedArcInk`: without it the caps merge and a 99% ring reads as closed. */ capGap?: number; /** Allow a ratio ABOVE 1 (a quota that can overrun). The first lap closes the ring * and the overrun is painted as a second pass from the same origin, so its round * tail cap sweeps over the head — the owner's ask for 额度预测 (2026-09-29): * 「大于 100 则环形图尾部圆角盖过头部套圈」. Without this flag the ratio is * clamped, which is what every other dial wants (a 130% cache-hit rate is not a * thing, so a second lap there would be noise). */ overshoot?: boolean; } export declare function Donut({ radius, ratio, tone, stroke, inset, center, title, capGap, overshoot }: DonutProps): React.ReactElement;