import SymbolDraw from '../helper/SymbolDraw.js';
import * as graphic from '../../util/graphic.js';
import { ECPolyline, ECPolygon } from './poly.js';
import ChartView from '../../view/Chart.js';
import LineSeriesModel, { LineSeriesOption } from './LineSeries.js';
import type GlobalModel from '../../model/Global.js';
import type ExtensionAPI from '../../core/ExtensionAPI.js';
import Cartesian2D from '../../coord/cartesian/Cartesian2D.js';
import Polar from '../../coord/polar/Polar.js';
import type SeriesData from '../../data/SeriesData.js';
import type { Payload, DisplayState, LabelOption } from '../../util/types.js';
import { CoordinateSystemClipArea } from '../../coord/CoordinateSystem.js';
import Model from '../../model/Model.js';
declare type PolarArea = ReturnType<Polar['getArea']>;
declare type Cartesian2DArea = ReturnType<Cartesian2D['getArea']>;
interface EndLabelAnimationRecord {
    lastFrameIndex: number;
    originalX?: number;
    originalY?: number;
}
declare class LineView extends ChartView {
    static readonly type = "line";
    _symbolDraw: SymbolDraw;
    _lineGroup: graphic.Group;
    _coordSys: Cartesian2D | Polar;
    _endLabel: graphic.Text;
    _polyline: ECPolyline;
    _polygon: ECPolygon;
    _stackedOnPoints: ArrayLike<number>;
    _points: ArrayLike<number>;
    _step: LineSeriesOption['step'];
    _valueOrigin: LineSeriesOption['areaStyle']['origin'];
    _clipShapeForSymbol: CoordinateSystemClipArea;
    _data: SeriesData;
    init(): void;
    render(seriesModel: LineSeriesModel, ecModel: GlobalModel, api: ExtensionAPI): void;
    private packEventData;
    highlight(seriesModel: LineSeriesModel, ecModel: GlobalModel, api: ExtensionAPI, payload: Payload): void;
    downplay(seriesModel: LineSeriesModel, ecModel: GlobalModel, api: ExtensionAPI, payload: Payload): void;
    _changePolyState(toState: DisplayState): void;
    _newPolyline(points: ArrayLike<number>): ECPolyline;
    _newPolygon(points: ArrayLike<number>, stackedOnPoints: ArrayLike<number>): ECPolygon;
    _initSymbolLabelAnimation(data: SeriesData, coordSys: Polar | Cartesian2D, clipShape: PolarArea | Cartesian2DArea): void;
    _initOrUpdateEndLabel(seriesModel: LineSeriesModel, coordSys: Cartesian2D, inheritColor: string): void;
    _endLabelOnDuring(percent: number, clipRect: graphic.Rect, data: SeriesData, animationRecord: EndLabelAnimationRecord, valueAnimation: boolean, endLabelModel: Model<LabelOption>, coordSys: Cartesian2D): void;
    /**
     * @private
     */
    _doUpdateAnimation(data: SeriesData, stackedOnPoints: ArrayLike<number>, coordSys: Cartesian2D | Polar, api: ExtensionAPI, step: LineSeriesOption['step'], valueOrigin: LineSeriesOption['areaStyle']['origin']): void;
    remove(ecModel: GlobalModel): void;
}
export default LineView;
