import type { DataPoint } from "@d3plus/data";
import type { D3Selection } from "@d3plus/dom";
import { BaseClass } from "../utils/index.js";
import type { AccessorFn } from "../utils/index.js";
import Circle from "./Circle.js";
import Line from "./Line.js";
import Rect from "./Rect.js";
/**
    Creates SVG whisker based on an array of data.
*/
export default class Whisker extends BaseClass {
    _endpoint: AccessorFn;
    _endpointConfig: Record<string, unknown>;
    _length: AccessorFn;
    _lineConfig: Record<string, unknown>;
    _orient: AccessorFn;
    _x: AccessorFn;
    _y: AccessorFn;
    _data: DataPoint[];
    _select: D3Selection;
    _line: Line;
    _whiskerEndpoint: (Circle | Rect)[];
    /**
        Invoked when creating a new class instance, and overrides any default parameters inherited from BaseClass.
        @private
  */
    constructor();
    /**
        Draws the whisker.
      @param callback Optional callback invoked after rendering completes.
  */
    render(callback?: () => void): this;
    /**
        The active highlight state for all sub-shapes in this Whisker.
  */
    active(_: ((d: DataPoint, i: number) => boolean) | null): void;
    /**
        The data array used to create shapes.
  */
    data(): DataPoint[];
    data(_: DataPoint[]): this;
    /**
        The endpoint shape type for each whisker.
  */
    endpoint(): AccessorFn;
    endpoint(_: AccessorFn | string): this;
    /**
        Configuration object for each endpoint.
  */
    endpointConfig(): Record<string, unknown>;
    endpointConfig(_: Record<string, unknown>): this;
    /**
        The hover highlight state for all sub-shapes in this Whisker.
  */
    hover(_: ((d: DataPoint, i: number) => boolean) | null): void;
    /**
        Length accessor for whisker.
  */
    length(): AccessorFn;
    length(_: AccessorFn | number): this;
    /**
        Configuration object for the line shape.
  */
    lineConfig(): Record<string, unknown>;
    lineConfig(_: Record<string, unknown>): this;
    /**
        The orientation of the whisker shape.
  */
    orient(): AccessorFn;
    orient(_: AccessorFn | string): this;
    /**
        The SVG container element for this visualization. 3 selector or DOM element.
  */
    select(): D3Selection;
    select(_: string | HTMLElement | SVGElement | null): this;
    /**
      The x position accessor for each whisker.
  
  @example
  function(d) {
    return d.x;
  }
  */
    x(): AccessorFn;
    x(_: AccessorFn | number): this;
    /**
        The y position accessor for each whisker.
  
  @example
  function(d) {
    return d.y;
  }
  */
    y(): AccessorFn;
    y(_: AccessorFn | number): this;
}
