/// <reference types="react" resolution-mode="require"/>
/// <reference types="web" />
import * as d3 from 'd3';
import { Data, PieShapeOption } from '../../types/options.js';
import { PolarShape } from './index.js';
export declare const DEFAULT_RADIUS_DIFF = 8;
export declare const ACTIVE_RADIUS_ENLARGE_SIZE = 2;
interface PieItemConfig {
    padAngle: number;
    startAngle: number;
    endAngle: number;
    innerRadius: number;
    outerRadius: number;
    borderRadius: number;
    borderWidth: number;
    color: string;
}
interface PieItemValue {
    path: string;
    config: PieItemConfig;
    data: Data;
    selected?: boolean;
    polylinePoints?: [number, number][];
}
/**
 * Pie 饼图 环形图
 */
export default class Pie extends PolarShape<PieShapeOption> {
    type: string;
    pieGuide: d3.Selection<HTMLDivElement, unknown, null, undefined>;
    svgEl: d3.Selection<SVGSVGElement, unknown, null, undefined>;
    data: Data;
    get nullData(): boolean;
    get totalValue(): number;
    get colorVar(): Record<string, string>;
    init(): void;
    render(): void;
    calculateLabelLength(data: any): number;
    renderPie(clientHeight: number): void;
    getLabel(d: any): string;
    renderGuidelines(paths: any): void;
    onMousemove(res: {
        self: unknown;
        data: PieItemValue;
        event: MouseEvent;
    }): void;
    onMouseleave(res: {
        self: unknown;
        data: PieItemValue;
        event: MouseEvent;
    }): void;
    addListener(): void;
    renderLabel(): void;
    redraw(): void;
}
export declare function getPath(config: {
    padAngle: number;
    startAngle: number;
    endAngle: number;
    innerRadius: number;
    outerRadius: number;
    borderRadius: number;
    borderWidth: number;
    color: string;
}): string;
export declare function calculatePaths(data: Data, option: PieShapeOption, color: string): ({
    path: string;
    config: {
        padAngle?: number;
        startAngle: number;
        endAngle: number;
        innerRadius?: number;
        outerRadius?: number;
        borderRadius?: number;
        borderWidth?: number;
        color: string;
    };
} | {
    path: string;
    config: {
        startAngle: number;
        endAngle: number;
        padAngle?: number;
        innerRadius?: number;
        outerRadius?: number;
        borderRadius?: number;
        borderWidth?: number;
        color: string;
    };
    data: any;
})[];
export declare function getRadius(option: PieShapeOption): {
    outerRadius: number;
    innerRadius: number;
};
export {};
