import { PieArcDatum } from 'd3-shape'; import { CSSProperties } from 'react'; export declare const halvesDonut: readonly ["top", "right", "bottom", "left"]; export declare type HalfDonut = typeof halvesDonut[number]; export declare type DonutDataItem = { name: string; color: string; values: ReadonlyArray; }; export declare type ArcDataItem = { value: number | null; color: string; name: string; }; export declare const arcLabelSizes: readonly ["xs", "s"]; export declare type ArcLabelSize = typeof arcLabelSizes[number]; export declare type SvgOffset = { top: number; right: number; bottom: number; left: number; }; export declare type SortValue = (prev: ArcDataItem, next: ArcDataItem) => number; export declare type LimitSizeSide = 'width' | 'height'; export declare type FormatArcLabel = (item: ArcDataItem) => string; export declare type ArcRadius = { inner: number; outer: number; }; export declare const MIN_RADIUS = 50; export declare const MAX_CIRCLES_TO_RENDER = 3; export declare const LABEL_LINE_WIDTH = 16; export declare const LABEL_LINE_OFFSET = 4; export declare const DEFAULT_SVG_OFFSET: SvgOffset; /** * Отступ между D3.arc элементами, указывается в пикселях. */ export declare const ARC_PAD = 1; export declare const ARC_RADIUS = 100; export declare const ARC_FULL_ANGLE: { startAngle: number; endAngle: number; }; export declare const EMPTY_PIE_ARC_DATUM: PieArcDatum; export declare const donutSizeInPercent: Record; export declare const paddingBetweenDonutsInPercent: Record; export declare type GetCirclesCount = (data: readonly DonutDataItem[]) => number; export declare type GetMinChartSize = (circlesCount: number, isExistTextData?: boolean, halfDonut?: HalfDonut) => number; export declare const isHalfDonutHorizontal: (halfDonut?: HalfDonut) => boolean; export declare const isHalfDonutVertical: (halfDonut?: HalfDonut) => boolean; export declare const getPadding: (circlesCount: number, chartSize: number) => number; export declare const getChartSize: ({ width, height, halfDonut, }: { width: number; height: number; halfDonut?: "left" | "right" | "bottom" | "top" | undefined; }) => number; export declare const getSizeDonut: (circlesCount: number, chartSize: number) => number; export declare const getDonutRadius: ({ mainRadius, index, circlesCount, chartSize, }: { mainRadius: number; index: number; circlesCount: number; chartSize: number; }) => number; export declare const defaultGetCirclesCount: GetCirclesCount; export declare const defaultGetMinChartSize: GetMinChartSize; export declare const getArcAnglesByHalfDonut: (halfDonut?: HalfDonut) => { startAngle: number; endAngle: number; }; declare type GetArcRadiusesParams = { mainRadius: number; circlesCount: number; sizeDonut: number; chartSize: number; }; export declare const getArcRadiuses: (params: GetArcRadiusesParams) => readonly ArcRadius[]; export declare const getPieData: (data: readonly ArcDataItem[], halfDonut?: HalfDonut) => PieArcDatum[]; export declare const getRenderArc: (radius: ArcRadius) => import("d3-shape").Arc>; export declare const isEmptyPieArcDatum: (value: ReadonlyArray>) => boolean; declare type GetValuesParams = { data: readonly DonutDataItem[]; circlesCount: number; sortValue?: SortValue | null; }; export declare const getValues: ({ circlesCount, data, sortValue, }: GetValuesParams) => { color: string; name: string; value: number | null; }[][]; export declare const defaultSortValue: SortValue; declare type GetSizeRectParams = { width: number; height: number; minChartSize: number; svgOffset: SvgOffset; halfDonut?: HalfDonut; limitSizeSide?: LimitSizeSide; }; export declare const getDonutMaxMinSizeRect: ({ width, height, minChartSize, svgOffset, halfDonut, limitSizeSide, }: GetSizeRectParams) => CSSProperties; export declare const getSvgTextDY: (deg: number) => "1em" | "0.35em" | "-0.35em"; export declare const radianToDegree: (radian: number) => number; export declare const getArcMiddleInRadian: ({ startAngle, endAngle, }: Pick, 'startAngle' | 'endAngle'>) => number; export declare const getSvgTextAnchor: (deg: number, halfDonut?: HalfDonut) => "end" | "start" | "middle"; declare type GetGroupTransformTranslate = { radius: number; svgOffset: SvgOffset; halfDonut?: HalfDonut; }; export declare const getGroupTransformTranslate: ({ halfDonut, radius, svgOffset, }: GetGroupTransformTranslate) => string; declare type SvgOffsetDOMRect = Pick; declare type GetSvgOffset = { arcsRect: SvgOffsetDOMRect; labelsRect: SvgOffsetDOMRect; }; export declare const getSvgOffset: ({ arcsRect, labelsRect }: GetSvgOffset) => { top: number; right: number; bottom: number; left: number; }; declare type GetSvgSize = { diameter: number; radius: number; svgOffset: SvgOffset; halfDonut?: HalfDonut; }; export declare const getSvgSize: ({ diameter, radius, svgOffset, halfDonut, }: GetSvgSize) => { width: number; height: number; }; declare type GetMainRadius = { width: number; height: number; svgOffset: SvgOffset; halfDonut?: HalfDonut; }; export declare const getMainRadius: ({ width, height, svgOffset, halfDonut, }: GetMainRadius) => number; declare type GetRendersLabelsParams = { radius: number; lineWidth: number; labelOffset: number; }; export declare const getRendersLabels: ({ radius, lineWidth, labelOffset, }: GetRendersLabelsParams) => { startLine: (d: PieArcDatum, ...args: any[]) => [number, number]; endLine: (d: PieArcDatum, ...args: any[]) => [number, number]; startLabel: (d: PieArcDatum, ...args: any[]) => [number, number]; }; export declare const cropArcLabel: (value: string) => string; export declare const defaultFormatArcLabel: FormatArcLabel; export {};