import * as i0 from '@angular/core';
import { OnChanges, ElementRef, EventEmitter, SimpleChanges } from '@angular/core';
import { MinMax } from '@obliczeniowo/elementary/math';
import * as i3 from '@obliczeniowo/elementary/svg';
import { GradientDef } from '@obliczeniowo/elementary/svg';
import { Point2D, IPoint2D } from '@obliczeniowo/elementary/classes';
import * as i2 from '@angular/common';

interface SimpleDiagramHover {
    converted: Point2D;
    original: Point2D;
}
declare class SimpleDiagram2DComponent implements OnChanges {
    protected element: ElementRef<HTMLElement>;
    svg: SVGSVGElement;
    /**
     * Points2D array table as diagram points
     */
    points: Point2D[];
    /**
     * Gradient definition description including:
     * array of:
     * - colors;
     * - opacity;
     * - offset;
     * coordinates of gradient:
     * - x, y start/end position (optional)
     */
    gradient: GradientDef | undefined;
    /**
     * When undefined or not set it will 1 on X is 100% object width, and similar on Y
     * When 'userSpaceOnUse' it use space units system (not related to object size)
     */
    gradientUnits: 'userSpaceOnUse' | undefined;
    /**
     * diagram padding
     */
    padding: number;
    /**
     * bottom diagram padding (includes as part of diagram shape)
     */
    diagramBottomPadding: number;
    /** */
    height: number;
    /** */
    width: number;
    /**
     * When set to true emit cursor position value in diagram space coordinates
     */
    interactive: boolean;
    /**
     * Emit when require recalculation
     */
    recalculate: EventEmitter<{
        component: SimpleDiagram2DComponent;
    }>;
    hover: EventEmitter<SimpleDiagramHover>;
    protected convertedShape: string;
    protected convertedLines: string;
    protected gradientId: string;
    protected xMinMax: MinMax;
    protected yMinMax: MinMax;
    protected dx: number;
    protected dy: number;
    protected sx: number;
    protected sy: number;
    constructor(element: ElementRef<HTMLElement>);
    ngOnChanges(changes: SimpleChanges): void;
    transform(p: Point2D): Point2D;
    mouseToDiagram(p: IPoint2D): Point2D;
    interpolate(x: number): number;
    protected mouseMove(event: MouseEvent): void;
    protected convert(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<SimpleDiagram2DComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SimpleDiagram2DComponent, "obl-simple-diagram2-d", never, { "points": { "alias": "points"; "required": false; }; "gradient": { "alias": "gradient"; "required": false; }; "gradientUnits": { "alias": "gradientUnits"; "required": false; }; "padding": { "alias": "padding"; "required": false; }; "diagramBottomPadding": { "alias": "diagramBottomPadding"; "required": false; }; "height": { "alias": "height"; "required": false; }; "width": { "alias": "width"; "required": false; }; "interactive": { "alias": "interactive"; "required": false; }; }, { "recalculate": "recalculate"; "hover": "hover"; }, never, ["*"], false, never>;
}

declare class SimpleDiagram2DModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<SimpleDiagram2DModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<SimpleDiagram2DModule, [typeof SimpleDiagram2DComponent], [typeof i2.CommonModule, typeof i3.SvgModule], [typeof SimpleDiagram2DComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<SimpleDiagram2DModule>;
}

export { SimpleDiagram2DComponent, SimpleDiagram2DModule };
export type { SimpleDiagramHover };
