import { ChangeDetectorRef, EventEmitter, OnDestroy, OnInit, TemplateRef } from '@angular/core';
import { CurveFactory, CurveFactoryLineOnly } from 'd3';
import { Observable, Subject } from 'rxjs';
import { StringMap } from '../../../types/commons';
import { ResizeEvent } from '../../../utils/public-api';
import { ChartData } from '../../../view-chart/types';
import { ContextChartService } from '../../chart.service';
import { ChartTooltipComponent, ContextItem } from '../tooltip/tooltip.component';
export interface AreaPosition {
    x1: number;
    x2: number;
    startX: number | string;
    endX: number | string;
}
export declare class ChartComponent implements OnInit, OnDestroy {
    readonly context: ContextChartService;
    private readonly cdr;
    width: number;
    height: number;
    marginLeft: number;
    title: string | TemplateRef<unknown>;
    titleDescription: string | TemplateRef<unknown>;
    titleDescriptionContext: StringMap;
    enableZoom: boolean;
    contextCallbackFunction$: Observable<(context: ContextChartService) => void>;
    contextCallbackFunction: (context: ContextChartService) => void;
    hideLegend: boolean;
    mode: 'card' | 'default';
    curveType: CurveFactory | CurveFactoryLineOnly;
    data: ChartData[];
    data$: Observable<ChartData[]>;
    mouseUpEvent: EventEmitter<AreaPosition>;
    clickEvent: EventEmitter<ContextItem[]>;
    tooltipComponent: ChartTooltipComponent;
    isTemplateRef: (label: string | TemplateRef<unknown>) => label is TemplateRef<unknown>;
    margin: {
        top: number;
        right: number;
        bottom: number;
        left: number;
    };
    openSelect: boolean;
    destroy$$: Subject<void>;
    areaPosition: AreaPosition;
    view: {
        width: number;
        height: number;
    };
    get transform(): string;
    constructor(context: ContextChartService, cdr: ChangeDetectorRef);
    onResized({ width, height }: ResizeEvent): void;
    ngOnInit(): void;
    onMouseMove(data: {
        e: MouseEvent;
        rectDom?: HTMLElement;
    }): void;
    onMouseLeave(): void;
    onMouseDown(e: MouseEvent): void;
    onMouseUp(): void;
    onClick(e: MouseEvent): void;
    ngOnDestroy(): void;
}
