export type PieSliceInput = { /** React key / 凡例トグル用。未指定時は label */ id?: string; label: string; value: number; color: string; }; export type PieSliceGeometry = { id: string; label: string; color: string; value: number; startAngle: number; endAngle: number; path: string; }; /** 同名スライスを区別する内部キー */ export declare function getPieSliceKey(index: number, label: string): string; export declare function getPieSliceDisplayLabel(seriesKey: string): string; /** 凡例の last-1 ガード用。0 以下は描画しないのでカウントしない */ export declare function getPieDrawableSeriesLabels(series: readonly { label: string; data: readonly (number | null)[]; }[]): string[]; export declare function describeSlicePath(cx: number, cy: number, outerRadius: number, innerRadius: number, startAngle: number, endAngle: number): string; export declare function hasPieChartData(data: readonly Pick[]): boolean; /** 正の値だけを合計する(0 以下は無視) */ export declare function getPieTotal(data: readonly Pick[]): number; export type PieSliceLabelGutterOptions = { labels?: readonly string[]; fontSize?: number; }; /** フォーマット済みラベルと fontSize から外側ラベル用の SVG 余白を取る */ export declare function getPieSliceLabelGutter(mode: "none" | "value" | "percent" | "both", options?: PieSliceLabelGutterOptions): { x: number; y: number; }; export type PieSliceLabelLayout = { midAngle: number; lineStartX: number; lineStartY: number; lineEndX: number; lineEndY: number; textX: number; textY: number; textAnchor: "start" | "end"; percent: number; }; /** スライス色に対してコントラストが高い方のラベル色を返す。解析できない色は darkColor */ export declare function pickContrastingLabelColor(background: string, lightColor: string, darkColor: string): string; export declare function resolvePieSliceLabelStyle(themeStyle: { fontSize: number; color: string; }, override?: { fontSize?: number; color?: string; }): { fontSize: number; color: string; }; /** donut 中央の数値サイズ。穴とフォーマット済み文字列の幅から 12〜24 に収める */ export declare function getPieCenterTotalValueFontSize(innerRadius: number, formattedValue?: string): number; export declare function resolvePieCenterTotalStyle(themeColor: string, autoFontSize: number, override?: { fontSize?: number; color?: string; }): { fontSize: number; color: string; captionFontSize: number; }; export declare function formatPieSliceLabel(value: number, total: number, mode: "value" | "percent" | "both", valueFormatter: (value: number) => string, percentFormatter: (value: number) => string): string; export declare function getPieSliceLabelLayout(startAngle: number, endAngle: number, value: number, total: number, cx: number, cy: number, outerRadius: number): PieSliceLabelLayout | null; export type PieSliceInnerLabelLayout = { x: number; y: number; }; export declare function getPieSliceInnerLabelLayout(startAngle: number, endAngle: number, cx: number, cy: number, outerRadius: number, innerRadius: number): PieSliceInnerLabelLayout | null; export declare function getPieSlices(data: readonly PieSliceInput[], cx: number, cy: number, outerRadius: number, innerRadius: number): PieSliceGeometry[];