import { CoordinateCalculatorBase } from "../../../Charting/Numerics/CoordinateCalculators/CoordinateCalculatorBase";
import { ELogarithmicMajorTickMode, ELogarithmicMinorTickMode } from "../../../Charting/Numerics/TickProviders/LogarithmicTickProvider";
import { TEasingFn } from "../../../Core/Animations/EasingFunctions";
import { NumberRange } from "../../../Core/NumberRange";
import { EAxisType } from "../../../types/AxisType";
import { TSciChart3D } from "../../../types/TSciChart3D";
import { AxisBase3D } from "./AxisBase3D";
import { INumericAxis3dOptions } from "./NumericAxis3D";
/**
 * Optional parameters used to configure a {@link LogarithmicAxis3D} at construct time
 */
export interface ILogarithmicAxis3dOptions extends INumericAxis3dOptions {
    /**
     * 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 positive and negative values.
     */
    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;
}
/**
 * @summary A 3D Chart Logarithmic Numeric Axis type
 * @description A LogarithmicAxis3D uses logarithmic scaling of values to coordinates.
 * The axis can represent positive or negative values, but not both at the same time.
 * @remarks
 * Set a {@link LogarithmicAxis3D} on the {@link SciChart3DSurface.xAxis}, {@link SciChart3DSurface.yAxis}
 * or {@link SciChart3DSurface.zAxis} property.
 */
export declare class LogarithmicAxis3D extends AxisBase3D {
    /**
     * @inheritDoc
     */
    readonly type: EAxisType;
    private logBaseProperty;
    private isNegativeProperty;
    private isHighPrecisionTicksProperty;
    /**
     * Creates an instance of a {@link LogarithmicAxis3D}
     * @param webAssemblyContext The {@link TSciChart3D | SciChart 3D WebAssembly Context} containing native methods and
     * access to our WebGL2 Engine and WebAssembly numerical methods
     * @param options optional parameters of type {@link ILogarithmicAxis3dOptions} to configure the axis
     */
    constructor(webAssemblyContext: TSciChart3D, options?: ILogarithmicAxis3dOptions);
    /**
     * 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);
    /**
     * Gets or sets whether this axis shows negative values only (true) or positive values only (false)
     */
    get isNegative(): boolean;
    set isNegative(isNegative: boolean);
    get isHighPrecisionTicks(): boolean;
    set isHighPrecisionTicks(value: boolean);
    /**
     * Gets or sets the mode for Major ticks using {@link ELogarithmicMajorTickMode}
     */
    get majorTickMode(): ELogarithmicMajorTickMode;
    set majorTickMode(mode: ELogarithmicMajorTickMode);
    /**
     * Gets or sets the mode for minor ticks using {@link ELogarithmicMinorTickMode}
     */
    get minorTickMode(): ELogarithmicMinorTickMode;
    set minorTickMode(mode: ELogarithmicMinorTickMode);
    /**
     * @inheritDoc
     */
    getDefaultNonZeroRange(): NumberRange;
    /**
     * @inheritDoc
     */
    hasValidVisibleRange(): boolean;
    /**
     * @inheritDoc
     */
    animateVisibleRange(visibleRange: NumberRange, durationMs: number, easingFunction?: TEasingFn, onCompleted?: () => void): import("../../..").IGenericAnimation;
    /**
     * @inheritDoc
     */
    getMaximumRange(): NumberRange;
    toJSON(): import("../../..").TAxis3DDefinition;
    /**
     * @inheritDoc
     */
    protected getCurrentCoordinateCalculatorInternal(): CoordinateCalculatorBase;
    private get logTickProvider();
    private updateProviders;
}
