import { Chart } from '../chart.js';
import { Flow, Head, Power, DataOptions, Options, State, Speed } from './types.js';
/**
 * Show a pump's relationship between flow rate and pressure at different operating conditions.
 */
export declare class Pumpchart extends Chart<Options> {
    /**
     * Layers of the SVG as groups.
     */
    private readonly g;
    /**
     * The maximum flow rate shown on the x-axis
     */
    private readonly maxFlow;
    /**
     * The maximum head pressure shown on the y-axis
     */
    private readonly maxHead;
    /**
     * Get the ideal axis interval
     */
    private static getStep;
    /**
     * Get the list of all available units for flow.
     * @returns A list of units
     */
    static getFlowUnits(): Flow[];
    /**
     * Get the list of all available units for head.
     * @returns A list of units
     */
    static getHeadUnits(): Head[];
    /**
     * Get the list of all available units for speed.
     * @returns A list of units
     */
    static getSpeedUnits(): Speed[];
    /**
     * Get the list of all available units for power.
     * @returns A list of units
     */
    static getPowerUnits(): Power[];
    /**
     * Create a new Pumpchart with custom options.
     * @param options Customization options for the new Pumpchart.
     */
    constructor(options?: Partial<Options>);
    /**
     * Convert a state to an (x,y) coordinate.
     * @param state Any state in this system
     * @returns An (x,y) coordinate on the screen
     */
    private state2xy;
    /**
     * Create a SVG path element from an array of states.
     * @param data An array of states
     * @param closePath Whether or not to close the path
     * @returns A `<path>` element containing the array of states
     */
    private createPath;
    /**
     * Draw an axis label
     * @param content Label text content
     * @param location Label location (state)
     * @param color Label font color
     * @param anchor Label text anchor
     * @param tooltip Optional tooltip text on mouse hover
     */
    private drawLabel;
    /**
     * Draw a curve `h = f(q)` on the curves layer.
     */
    private drawCurve;
    /**
     * Draw a custom circle onto any layer.
     */
    private drawCircle;
    /**
     * Represents the pump curve `h = p(q)`
     * @param q Flow rate
     * @param speed Pump speed
     * @returns Head gained by the fluid by the pump
     */
    private p;
    /**
     * Represents the system curve `h = s(q)`
     * @param q Flow rate
     * @returns Head loss from the fluid by the system
     */
    private s;
    /**
     * Plot a single data point.
     * @param state The current state of the system
     * @param config Display options for plotting data
     */
    plot(state: State, config?: Partial<DataOptions>): void;
    /**
     * Clear all the data from this chart.
     */
    clearData(): void;
}
