import type { DataPoint } from "@d3plus/data";
import type { AccessorFn } from "../utils/index.js";
import Shape, { type ShapeAes } from "./Shape.js";
/**
    Creates SVG areas based on an array of data.
*/
export default class Area extends Shape {
    _curve: AccessorFn;
    _defined: (d: DataPoint) => boolean;
    _labelBounds: ((d: DataPoint, i: number, aes: ShapeAes) => Record<string, unknown> | null | false) | null;
    _labelConfig: Record<string, unknown>;
    _name: string;
    _x: AccessorFn;
    _x0: AccessorFn;
    _x1: AccessorFn | null;
    _y: AccessorFn;
    _y0: AccessorFn;
    _y1: AccessorFn | null;
    _path: Record<string, unknown>;
    /**
        Invoked when creating a new class instance, and overrides any default parameters inherited from Shape.
        @private
  */
    constructor();
    /**
        Given a specific data point and index, returns the aesthetic properties of the shape.
        @param data point*
        @param index @private
  */
    _aes(d: DataPoint): ShapeAes;
    /**
        Filters/manipulates the data array before binding each point to an SVG group.
        @param data @private
  */
    _dataFilter(data: DataPoint[]): DataPoint[];
    /**
        Draws the area polygons.
      @param callback Optional callback invoked after rendering completes.
  */
    render(callback?: () => void): this;
    /**
        The d3 curve function used to interpolate the area.
  */
    curve(): AccessorFn;
    curve(_: AccessorFn | string): this;
    /**
        An accessor function that determines whether a data point is defined (not a gap in the area).
  */
    defined(): (d: DataPoint) => boolean;
    defined(_: (d: DataPoint) => boolean): this;
    /**
        The x position accessor. Also sets x0 to the same value.
  */
    x(): AccessorFn;
    x(_: AccessorFn | number): this;
    /**
        The x0 (left edge) position accessor for the area.
  */
    x0(): AccessorFn;
    x0(_: AccessorFn | number): this;
    /**
        The x1 (right edge) position accessor for the area.
  */
    x1(): AccessorFn | null;
    x1(_: AccessorFn | number | null): this;
    /**
        The y position accessor. Also sets y0 to the same value.
  */
    y(): AccessorFn;
    y(_: AccessorFn | number): this;
    /**
        The y0 (top edge) position accessor for the area.
  */
    y0(): AccessorFn;
    y0(_: AccessorFn | number): this;
    /**
        The y1 (bottom edge) position accessor for the area.
  */
    y1(): AccessorFn | null;
    y1(_: AccessorFn | number | null): this;
}
