import type { DataPoint } from "@d3plus/data";
import type { D3Selection } from "@d3plus/dom";
import type { AccessorFn } from "../utils/index.js";
import Shape, { type ShapeAes } from "./Shape.js";
/**
    Creates SVG rectangles based on an array of data. See [this example](https://d3plus.org/examples/d3plus-shape/getting-started/) for help getting started using the rectangle generator.
*/
export default class Rect extends Shape {
    _height: AccessorFn;
    _labelBounds: ((d: DataPoint, i: number, aes: ShapeAes) => Record<string, unknown> | null | false) | null;
    _name: string;
    _width: AccessorFn;
    /**
        Invoked when creating a new class instance, and overrides any default parameters inherited from Shape.
        @private
  */
    constructor();
    /**
        Draws the rectangles.
      @param callback Optional callback invoked after rendering completes.
  */
    render(callback?: () => void): this;
    /**
        Given a specific data point and index, returns the aesthetic properties of the shape.
        @param data point*
        @param index @private
  */
    _aes(d: DataPoint, i: number): ShapeAes;
    /**
        Provides the default positioning to the <rect> elements.
        @param elem @private
  */
    _applyPosition(elem: D3Selection): void;
    /**
        The height accessor for each rectangle.
  
  @example
  function(d) {
    return d.height;
  }
  */
    height(): AccessorFn;
    height(_: AccessorFn | number): this;
    /**
        The width accessor for each rectangle.
  
  @example
  function(d) {
    return d.width;
  }
  */
    width(): AccessorFn;
    width(_: AccessorFn | number): this;
}
