import { eSCRTAxisTitleRotationMode, eSCRTTickLabelOrientationMode, eTSRTextAlignMode } from "../../../types/TSciChart3D";
import { TArgb } from "../../../utils/parseColor";
import { ILineStyle } from "./ILineStyle";
/**
 * Defines the interface to an {@link IAxisDescriptor} - contains properties, data and
 * parameters to pass to the WebAssembly engine for drawing an {@link AxisBase3D}
 */
export interface IAxisDescriptor {
    /**
     * The axis title string
     */
    axisTitle: string;
    /**
     * The axis size in one dimension (X,Y,Z) in world-coordinates
     */
    axisSize: number;
    /**
     * The background color as an ARGB color represented as UInt32
     */
    backgroundColor: TArgb;
    /**
     * The Axis Band color as ARGB represented as UInt32
     */
    bandColor: TArgb;
    /**
     * The Axis Border color as ARGB represented as UInt32
     */
    borderColor: TArgb;
    /**
     * Major tick / gridline and label coordinates in world-coordinates
     */
    majorCoordinates: number[];
    /**
     * Minor tick / gridline and label coordinates in world-coordinates
     */
    minorCoordinates: number[];
    /**
     * An array of strings for the axis labels at Major gridline locations
     */
    tickLabels: string[];
    /**
     * Style object of type {@link ILineStyle} to define the Major gridlines
     */
    majorLineStyle: ILineStyle;
    /**
     * Style object of type {@link ILineStyle} to define the Minor gridlines
     */
    minorLineStyle: ILineStyle;
    /**
     * Style object of type {@link ILineStyle} to define the Major ticklines
     */
    majorTickStyle: ILineStyle;
    /**
     * Style object of type {@link ILineStyle} to define the Minor ticklines
     */
    minorTickStyle: ILineStyle;
    /**
     * Style object of type {@link ITextStyle} to define the Axis Title style
     */
    titleStyle: ITextStyle;
    /**
     * Style object of type {@link ITextStyle} to define the Axis Label style
     */
    labelStyle: ITextStyle;
    /**
     * When true, draws the major gridlines on the axis
     */
    drawMajorGridlines: boolean;
    /**
     * When true, draws the minor gridlines on the axis
     */
    drawMinorGridlines: boolean;
    /**
     * When true, draws the major ticks on the axis
     */
    drawMajorTicks: boolean;
    /**
     * When true, draws the minor ticks on the axis
     */
    drawMinorTicks: boolean;
    /**
     * When true, draw the axis bands
     */
    drawBands: boolean;
    /**
     * When true, draw the axis labels
     */
    drawLabels: boolean;
    /**
     * When true, the axis is visible
     */
    isVisible: boolean;
    /**
     * Gets the Border thickness in world coordinates
     */
    borderThickness: number;
    /**
     * When true, Labels are depth-tested and may be behind other objects in the chart, else they are always on-top
     */
    labelDepthTestEnabled: boolean;
    /**
     * Gets a title offset in world coordinates
     */
    titleOffset: number;
    /**
     * Get an offset for Axis labels in world coordinates
     */
    tickLabelsOffset: number;
    /**
     * When true, attempt to avoid label overlap
     */
    smoothLabelOverlapAvoidance: boolean;
    /**
     * Orientation mode for axis labels. Default horizontal.
     */
    labelOrientationMode: eSCRTTickLabelOrientationMode;
    /**
     * Orientation mode for axis titles. Default horizontal.
     */
    titleOrientationMode: eSCRTAxisTitleRotationMode;
}
/**
 * An interface to define the style of text labels on 3D Chart axis
 */
export interface ITextStyle {
    /**
     * Gets or sets the DPI scaling
     */
    dpiScaling: number;
    /**
     * Gets or sets the font as a string
     */
    fontFamily: string;
    /**
     * Gets or sets the Font size
     */
    fontSize: number;
    /**
     * Gets or sets the font foreground as an ARGB UInt32 color
     */
    foreground: number;
    /**
     * Spacing in pixel for multiline text
     */
    multilineSpacing: number;
    /**
     * Horizontal alignment for multiline text;
     */
    multilineAlignment: eTSRTextAlignMode;
}
/**
 * Returns true if descriptors are deeply equal, else false
 * @param a
 * @param b
 */
export declare function getDescriptorsEqual(a: IAxisDescriptor | undefined, b: IAxisDescriptor | undefined): boolean;
export declare function getLineStylesEqual(a: ILineStyle | undefined, b: ILineStyle | undefined): boolean;
export declare function getTArgbEqual(a: TArgb | undefined, b: TArgb | undefined): boolean;
export declare function getTextStylesEqual(a: ITextStyle | undefined, b: ITextStyle | undefined): boolean;
export declare function getArraysEqual<T>(a: T[] | undefined, b: T[] | undefined): boolean;
