import type { TEasingFn } from "../../../Core/Animations/EasingFunctions";
import type { Dictionary } from "../../../Core/Dictionary";
import { NumberRange } from "../../../Core/NumberRange";
import { EAxisType } from "../../../types/AxisType";
import type { TSciChart } from "../../../types/TSciChart";
import type { CoordinateCalculatorBase } from "../../Numerics/CoordinateCalculators/CoordinateCalculatorBase";
import type { ELogarithmicMajorTickMode, ELogarithmicMinorTickMode } from "../../Numerics/TickProviders/LogarithmicTickProvider";
import type { TickProvider } from "../../Numerics/TickProviders/TickProvider";
import { AxisBase2D } from "./AxisBase2D";
import type { DeltaCalculator } from "./DeltaCalculator/DeltaCalculator";
import type { LabelProviderBase2D } from "./LabelProvider/LabelProviderBase2D";
import type { INumericAxisOptions } from "./NumericAxis";
export declare const MIN_LOG_AXIS_VALUE = 1e-10;
/**
 * Optional parameters used to configure a {@link LogarithmicAxis} at construct time
 */
export interface ILogarithmicAxisOptions extends INumericAxisOptions {
    /**
     * The Logarithmic Base for the axis. Defaults to 10
     */
    logBase?: number;
    /**
     * False if this axis only shows positive values, true if it only shows negative.  A log axis cannot show both
     */
    isNegative?: boolean;
    /**
     * The mode for Major ticks using {@link ELogarithmicMajorTickMode}
     * Equally spaced (default, best for large ranges) or
     * Round numbers (better for small ranges)
     */
    majorTickMode?: ELogarithmicMajorTickMode;
    /**
     * The mode for minor ticks using {@link ELogarithmicMinorTickMode},
     * Linear (default, best for smaller ranges),
     * Logarithmic (better for very large ranges) or
     * Auto (switches from linear to Logarithmic when the visible range is such that
     *  the first linear minor tick would be more than 70% of the major tick)
     */
    minorTickMode?: ELogarithmicMinorTickMode;
    /** If false, only ticks that are whole number multiples of the log base will be used */
    isHighPrecisionTicks?: boolean;
}
/**
 * Creates an instance of a {@link LogarithmicAxis}
 * @param webAssemblyContext The {@link TSciChart | SciChart 2D WebAssembly Context} containing native methods and
 * access to our WebGL2 Engine and WebAssembly numerical methods
 * @param options Optional parameters of type {@link ILogarithmicAxisOptions} used to configure the axis at instantiation time
 *
 * ---
 * 📚 Docs: {@link https://www.scichart.com/documentation/js/v4/2d-charts/axis-api/axis-types/logarithmic-axis/}
 */
export declare class LogarithmicAxis extends AxisBase2D {
    readonly type = EAxisType.LogarithmicAxis;
    private logBaseProperty;
    private isNegativeProperty;
    private isHighPrecisionTicksProperty;
    constructor(wasmContext: TSciChart, options?: ILogarithmicAxisOptions);
    /**
     * @inheritDoc
     */
    get isLinearAxis(): boolean;
    /**
     * Gets or sets the Logarithmic Base for the axis. Defaults to 10
     */
    get logBase(): number;
    /**
     * Gets or sets the Logarithmic Base for the axis. Defaults to 10
     */
    set logBase(logBase: number);
    get isNegative(): boolean;
    set isNegative(isNegative: boolean);
    get isHighPrecisionTicks(): boolean;
    set isHighPrecisionTicks(isHighPrecisionTicks: boolean);
    getDefaultNonZeroRange(): NumberRange;
    hasValidVisibleRange(): boolean;
    get tickProvider(): TickProvider;
    set tickProvider(tickProvider: TickProvider);
    get deltaCalculator(): DeltaCalculator;
    set deltaCalculator(deltaCalculator: DeltaCalculator);
    get labelProvider(): LabelProviderBase2D;
    set labelProvider(labelProvider: LabelProviderBase2D);
    /**
     * Gets or sets the mode for Major ticks using {@link ELogarithmicMajorTickMode}
     * Equally spaced (best for large ranges) or
     * Round numbers (better for small ranges)
     */
    get majorTickMode(): ELogarithmicMajorTickMode;
    /**
     * Gets or sets the mode for Major ticks using {@link ELogarithmicMajorTickMode}
     * Equally spaced (best for large ranges) or
     * Round numbers (better for small ranges)
     */
    set majorTickMode(mode: ELogarithmicMajorTickMode);
    /**
     * Gets or sets the mode for minor ticks using {@link ELogarithmicMinorTickMode},
     * Linear (default, best for smaller ranges),
     * Logarithmic (better for very large ranges) or
     * Auto (switches from linear to Logarithmic when the visible range is such that
     *  the first linear minor tick would be more than 70% of the major tick)
     */
    get minorTickMode(): ELogarithmicMinorTickMode;
    /**
     * Gets or sets the mode for minor ticks using {@link ELogarithmicMinorTickMode},
     * Linear (default, best for smaller ranges),
     * Logarithmic (better for very large ranges) or
     * Auto (switches from linear to Logarithmic when the visible range is such that
     *  the first linear minor tick would be more than 70% of the major tick)
     */
    set minorTickMode(mode: ELogarithmicMinorTickMode);
    getWindowedYRange(xRanges: Dictionary<NumberRange>): NumberRange;
    /**
     * @inheritdoc
     */
    animateVisibleRange(visibleRange: NumberRange, durationMs: number, easingFunction?: TEasingFn, onCompleted?: () => void): import("../../..").IGenericAnimation;
    scale(initialRange: NumberRange, delta: number, isMoreThanHalf: boolean): void;
    toJSON(): import("../../..").TAxisDefinition;
    protected getCurrentCoordinateCalculatorInternal(): CoordinateCalculatorBase;
    protected getMaxXRange(): NumberRange;
    private get logTickProvider();
    private updateProviders;
}
