import { SankeyGraph, SankeyLayout } from 'd3-sankey';
import * as React from 'react';
import { IBasestate, IChart, IImageExportOptions, SLink, SNode } from '../../types/IDataPoint';
import { IChartHoverCardProps } from '../../utilities/ChartHoverCard/ChartHoverCard.types';
import { IMargins } from '../../utilities/utilities';
import { ISankeyChartData, ISankeyChartProps } from './SankeyChart.types';
type NodesInColumns = {
    [key: number]: SNode[];
};
type SankeyLayoutGenerator = SankeyLayout<SankeyGraph<{}, {}>, {}, {}>;
export interface ISankeyChartState extends IBasestate, IChartHoverCardProps {
    containerWidth: number;
    containerHeight: number;
    selectedState: boolean;
    selectedLinks: Set<Number>;
    selectedNodes: Set<Number>;
    selectedNode?: SNode;
    refSelected?: any;
    selectedLink?: SLink;
    shouldOverflow: boolean;
}
/**
 * This is used to group nodes by column index.
 */
export declare function groupNodesByColumn(graph: ISankeyChartData): NodesInColumns;
/**
 * This is used to introduce dynamic padding for cases where the number of nodes in a column is huge
 * so that we maintain a node to space ratio for such columns as if we fail to do so the
 * chart is devoid of nodes and only shows links.
 */
export declare function adjustPadding(sankey: SankeyLayoutGenerator, height: number, nodesInColumn: NodesInColumns): void;
export declare function preRenderLayout(margins: IMargins, containerWidth: number, containerHeight: number, isRtl: boolean): {
    sankey: SankeyLayoutGenerator;
    height: number;
    width: number;
};
export declare class SankeyChartBase extends React.Component<ISankeyChartProps, ISankeyChartState> implements IChart {
    static defaultProps: Partial<ISankeyChartProps>;
    chartContainer: HTMLDivElement;
    private _reqID;
    private readonly _calloutId;
    private readonly _linkId;
    private readonly _chartId;
    private readonly _emptyChartId;
    private readonly _labelTooltipId;
    private readonly _margins;
    private readonly _isRtl;
    private _numColumns;
    private readonly _computeClassNamesProps;
    private readonly _computeClassNames;
    private readonly _normalizeData;
    private readonly _fetchTooltip;
    private readonly _nodeAttributes;
    private readonly _linkAttributes;
    private readonly _fetchNodes;
    private readonly _fetchLinks;
    private readonly _strings;
    private readonly _accessibility;
    constructor(props: ISankeyChartProps);
    componentDidMount(): void;
    componentDidUpdate(prevProps: ISankeyChartProps): void;
    componentWillUnmount(): void;
    render(): React.ReactNode;
    toImage: (opts?: IImageExportOptions) => Promise<string>;
    private _computeNodeAttributes;
    private _linkCalloutAttributes;
    private _normalizeSankeyData;
    private _labelTooltipDiv;
    private _createLinks;
    private _createNodes;
    private _onLeave;
    private _onHover;
    private _formatNumber;
    private _onStreamHover;
    private _onStreamLeave;
    private _onFocusLink;
    private _onCloseCallout;
    private _onBlur;
    private _fillNodeColors;
    private _fillStreamColors;
    private _fillStreamBorder;
    private _fillNodeBorder;
    private _getOpacityStream;
    private _getOpacityStreamBorder;
    private _fitParentContainer;
    private _showTooltip;
    private _hideTooltip;
    private _isChartEmpty;
    private _calculateChartMinWidth;
}
export {};
