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 Rect from "./Rect.js";
import Whisker from "./Whisker.js";
/**
    Creates SVG box based on an array of data.
*/
export default class Box extends BaseClass {
    _medianConfig: Record<string, unknown>;
    _orient: AccessorFn;
    _outlier: AccessorFn;
    _outlierConfig: Record<string, unknown>;
    _rectConfig: Record<string, unknown>;
    _rectWidth: AccessorFn;
    _whiskerConfig: Record<string, unknown>;
    _whiskerMode: (string | number)[];
    _x: AccessorFn;
    _y: AccessorFn;
    _data: DataPoint[];
    _select: D3Selection;
    _box: Rect;
    _median: Rect;
    _whisker: Whisker;
    _whiskerEndpoint: (Circle | Rect)[];
    _duration: number;
    /**
        Invoked when creating a new class instance, and overrides any default parameters inherited from BaseClass.
        @private
  */
    constructor();
    /**
        Draws the Box.
  */
    render(): this;
    /**
        The active highlight state for all sub-shapes in this Box.
  */
    active(_: ((d: DataPoint, i: number) => boolean) | null): void;
    /**
        The data array used to create shapes.
  */
    data(): DataPoint[];
    data(_: DataPoint[]): this;
    /**
        The hover highlight state for all sub-shapes in this Box.
  */
    hover(_: ((d: DataPoint, i: number) => boolean) | null): void;
    /**
        Configuration object for the median line.
  */
    medianConfig(): Record<string, unknown>;
    medianConfig(_: Record<string, unknown>): this;
    /**
        The orientation of the box shape.
  */
    orient(): AccessorFn;
    orient(_: AccessorFn | string): this;
    /**
        Whether to show outlier points.
  */
    outlier(): AccessorFn;
    outlier(_: AccessorFn | string): this;
    /**
        Configuration object for each outlier point.
  */
    outlierConfig(): Record<string, unknown>;
    outlierConfig(_: Record<string, unknown>): this;
    /**
        Configuration object for the rect shape.
  */
    rectConfig(): Record<string, unknown>;
    rectConfig(_: Record<string, unknown>): this;
    /**
        The width accessor for each box.
  
  @example
  function(d) {
    return d.width;
  }
  */
    rectWidth(): AccessorFn;
    rectWidth(_: AccessorFn | number): this;
    /**
        The SVG container element for this visualization. 3 selector or DOM element.
  */
    select(): D3Selection;
    select(_: string | HTMLElement | SVGElement | null): this;
    /**
        Configuration object for the whisker.
  */
    whiskerConfig(): Record<string, unknown>;
    whiskerConfig(_: Record<string, unknown>): this;
    /**
        Determines the value used for each whisker. Can be passed a single value to apply for both whiskers, or an Array of 2 values for the lower and upper whiskers (in that order). Accepted values are `"tukey"`, `"extent"`, or a Number representing a quantile.
  */
    whiskerMode(): (string | number)[];
    whiskerMode(_: (string | number)[] | string | number): this;
    /**
        The x position accessor for each box.
  
  @example
  function(d) {
    return d.x;
  }
  */
    x(): AccessorFn;
    x(_: AccessorFn | number): this;
    /**
        The y position accessor for each box.
  
  @example
  function(d) {
    return d.y;
  }
  */
    y(): AccessorFn;
    y(_: AccessorFn | number): this;
}
