import { transition } from "d3-transition";
import type { D3Selection } from "@d3plus/dom";
import { TextBox } from "../components/index.js";
import { BaseClass } from "../utils/index.js";
/**
    Creates an SVG scale based on an array of data.
*/
export default class Axis extends BaseClass {
    _select: D3Selection;
    _align: string;
    _barConfig: Record<string, unknown>;
    _data: any[];
    _domain: any[];
    _duration: number;
    _gridConfig: Record<string, unknown>;
    _gridLog: boolean;
    _gridSize: number | undefined;
    _grid: unknown[] | undefined;
    _height: number;
    _labelOffset: boolean;
    _labelRotation: boolean | undefined;
    _labels: unknown[] | undefined;
    _locale: any;
    _margin: Record<string, number>;
    _maxSize: number;
    _minSize: number;
    _orient: string;
    _outerBounds: Record<string, number>;
    _padding: number;
    _paddingInner: number;
    _paddingOuter: number;
    _position: {
        horizontal: boolean;
        width: string;
        height: string;
        x: string;
        y: string;
        opposite: string;
    };
    _range: (number | undefined)[] | undefined;
    _rounding: string;
    _roundingInsideMinPrefix: string;
    _roundingInsideMinSuffix: string;
    _roundingInsideMaxPrefix: string;
    _roundingInsideMaxSuffix: string;
    _scale: string;
    _scalePadding: number;
    _shape: string;
    _shapeConfig: Record<string, any>;
    _tickFormat: any;
    _ticks: unknown[] | undefined;
    _tickSize: number;
    _tickSuffix: string;
    _tickUnit: number;
    _timeLocale: Record<string, unknown> | undefined;
    _title: string | undefined;
    _titleClass: TextBox;
    _titleConfig: Record<string, any>;
    _width: number;
    _d3Scale: any;
    _d3ScaleNegative: any;
    _group: D3Selection;
    _lastScale: ((d: unknown) => number) | undefined;
    _availableTicks: unknown[];
    _visibleTicks: unknown[];
    _transition: ReturnType<typeof transition>;
    _userFormat: ((d: unknown) => string) | false | undefined;
    /**
        Invoked when creating a new class instance, and sets any default parameters.
        @private
  */
    constructor();
    /**
        Sets positioning for the axis bar.
        @param bar @private
  */
    _barPosition(bar: any): void;
    /**
        Returns the scale's domain, taking into account negative and positive log scales.
        @private
  */
    _getDomain(): unknown[];
    /**
        Returns a value's scale position, taking into account negative and positive log scales.
        @param d @private
  */
    _getPosition(d: unknown): number;
    /**
        Returns the scale's range, taking into account negative and positive log scales.
        @private
  */
    _getRange(): unknown[];
    /**
        Returns the scale's labels, taking into account negative and positive log scales.
        @private
  */
    _getLabels(): unknown[];
    /**
        Returns the scale's ticks, taking into account negative and positive log scales.
        @private
  */
    _getTicks(): unknown[];
    /**
        Sets positioning for the grid lines.
        @param lines @private
  */
    _gridPosition(lines: any, last?: boolean): void;
    /**
        Renders the current Axis to the page.
      @param callback Optional callback invoked after rendering completes.
  */
    render(callback?: (...args: unknown[]) => unknown): this;
    /**
        The horizontal alignment.
  */
    align(): string;
    align(_: string): this;
    /**
        Axis line style.
  */
    barConfig(): Record<string, unknown>;
    barConfig(_: Record<string, unknown>): this;
    /**
        An array of data points, which helps determine which ticks should be shown and which time resolution should be displayed.
  */
    data(): any[];
    data(_: any[]): this;
    /**
        Scale domain of the axis.
  */
    domain(): any[];
    domain(_: any[]): this;
    /**
        Transition duration of the axis.
  */
    duration(): number;
    duration(_: number): this;
    /**
        Grid values of the axis.
  */
    grid(): unknown[] | undefined;
    grid(_: unknown[]): this;
    /**
        Grid config of the axis.
  */
    gridConfig(): Record<string, unknown>;
    gridConfig(_: Record<string, unknown>): this;
    /**
        Grid behavior of the axis when scale is logarithmic.
  */
    gridLog(): boolean;
    gridLog(_: boolean): this;
    /**
        Grid size of the axis.
  */
    gridSize(): number | undefined;
    gridSize(_: number): this;
    /**
        Overall height of the axis.
  */
    height(): number;
    height(_: number): this;
    /**
        Visible tick labels of the axis.
  */
    labels(): unknown[] | undefined;
    labels(_: unknown[]): this;
    /**
        Whether to offset overlapping labels further from the axis to prevent collisions.
  */
    labelOffset(): boolean;
    labelOffset(_: boolean): this;
    /**
        Whether to rotate horizontal axis labels -90 degrees.
  */
    labelRotation(): boolean | undefined;
    labelRotation(_: boolean): this;
    /**
        Maximum size allowed for the space that contains the axis tick labels and title.
  */
    maxSize(): number;
    maxSize(_: number): this;
    /**
        Minimum size alloted for the space that contains the axis tick labels and title.
  */
    minSize(): number;
    minSize(_: number): this;
    /**
        The orientation of the shape.
  */
    orient(): string;
    orient(_: string): this;
    /**
        Returns the outer bounds of the axis content. Must be called after rendering.
        @example
  {"width": 180, "height": 24, "x": 10, "y": 20}
  */
    outerBounds(): Record<string, number>;
    /**
        The padding between each tick label.
  */
    padding(): number;
    padding(_: number): this;
    /**
        The inner padding of band scale.
  */
    paddingInner(): number;
    paddingInner(_: number): this;
    /**
        The outer padding of band scales.
  */
    paddingOuter(): number;
    paddingOuter(_: number): this;
    /**
        Scale range (in pixels) of the axis. The given array must have 2 values, but one may be `undefined` to allow the default behavior for that value.
  */
    range(): (number | undefined)[] | undefined;
    range(_: (number | undefined)[]): this;
    /**
        The rounding method for more evenly spaced ticks at the extents of the scale. Can be "none" (default), "outside", or "inside".
  */
    rounding(): string;
    rounding(_: string): this;
    /**
        The prefix for the minimum value of "inside" rounding scales.
  */
    roundingInsideMinPrefix(): string;
    roundingInsideMinPrefix(_: string): this;
    /**
        The suffix for the minimum value of "inside" rounding scales.
  */
    roundingInsideMinSuffix(): string;
    roundingInsideMinSuffix(_: string): this;
    /**
        The prefix for the maximum value of "inside" rounding scales.
  */
    roundingInsideMaxPrefix(): string;
    roundingInsideMaxPrefix(_: string): this;
    /**
        The suffix for the maximum value of "inside" rounding scales.
  */
    roundingInsideMaxSuffix(): string;
    roundingInsideMaxSuffix(_: string): this;
    /**
        Scale of the axis.
  */
    scale(): string;
    scale(_: string): this;
    /**
        The "padding" property of the scale, often used in point scales.
  */
    scalePadding(): number;
    scalePadding(_: number): this;
    /**
        The SVG container element as a d3 selector or DOM element.
  */
    select(): D3Selection;
    select(_: string | HTMLElement): this;
    /**
        Tick shape constructor.
  */
    shape(): string;
    shape(_: string): this;
    /**
        Tick style of the axis.
  */
    shapeConfig(): Record<string, any>;
    shapeConfig(_: Record<string, any>): this;
    /**
        Tick formatter.
  */
    tickFormat(): any;
    tickFormat(_: any): this;
    /**
        Tick values of the axis.
  */
    ticks(): unknown[] | undefined;
    ticks(_: unknown[]): this;
    /**
        Tick size of the axis.
  */
    tickSize(): number;
    tickSize(_: number): this;
    /**
        The tick abbreviation behavior for linear scales. Accepts "normal" (uses formatAbbreviate) or "smallest" (uses the suffix from the smallest tick as reference for every tick).
  */
    tickSuffix(): string;
    tickSuffix(_: string): this;
    /**
        Defines a custom locale object to be used in time scale. This object must include the following properties: dateTime, date, time, periods, days, shortDays, months, shortMonths. For more information, you can revise [d3p.d3-time-format](https://github.com/d3/d3-time-format/blob/master/README.md#timeFormatLocale).
  */
    timeLocale(): Record<string, unknown> | undefined;
    timeLocale(_: Record<string, unknown>): this;
    /**
        Title of the axis.
  */
    title(): string | undefined;
    title(_: string): this;
    /**
        Title configuration of the axis.
  */
    titleConfig(): Record<string, unknown>;
    titleConfig(_: Record<string, unknown>): this;
    /**
        Overall width of the axis.
  */
    width(): number;
    width(_: number): this;
}
