import type { Color, UpdateParameters } from "@deck.gl/core";
import { Layer } from "@deck.gl/core";
import type { RenderPass, UniformValue } from "@luma.gl/core";
import { Model } from "@luma.gl/engine";
import type { Point3D } from "../../utils";
import type { ExtendedLayerProps } from "../utils/layerTools";
declare enum TEXT_ANCHOR {
    start = 0,
    middle = 1,
    end = 2
}
declare enum ALIGNMENT_BASELINE {
    top = 1,
    center = 0,
    bottom = -1
}
type LabelData = {
    label: string;
    pos: Point3D;
    anchor?: TEXT_ANCHOR;
    alignment?: ALIGNMENT_BASELINE;
};
declare enum ViewSide {
    Left = 0,
    Right = 1,
    Bottom = 2,
    Top = 3
}
export interface Axes2DLayerProps extends ExtendedLayerProps {
    /** Minimal horizontal pixel size margin. May be larger if this number is to small for the label.
     */
    minimalMarginH: number;
    /** Minimal vertical pixel size margin. May be larger if this number is to small for the label.
     */
    minimalMarginV: number;
    /** @deprecated Use "minimalMarginH"
     */
    marginH: number;
    /** @deprecated Use "minimalMarginV"
     */
    marginV: number;
    formatLabelFunc?: (x: number) => string;
    labelColor?: Color;
    labelFontSizePt?: number;
    axisColor?: Color;
    backgroundColor?: Color;
    isLeftRuler: boolean;
    isRightRuler: boolean;
    isBottomRuler: boolean;
    isTopRuler: boolean;
}
export default class Axes2DLayer extends Layer<Axes2DLayerProps> {
    shouldUpdateState({ props, oldProps, context, changeFlags, }: UpdateParameters<Layer<Axes2DLayerProps>>): boolean;
    updateState(): void;
    initializeState(): void;
    makeLabel(n: number, ndecimals: number): string;
    GetTickLinesAndLabels(min: number, max: number, viewSide: ViewSide): [number[], LabelData[]];
    GetBackgroundTriangleLinesHorizontal(x_min_w: number, x_max_w: number, isTop: boolean): number[];
    GetBackgroundTriangleLinesVertical(y_min_w: number, y_max_w: number, isLeft: boolean): number[];
    makeLabelsData(tick_lines: number[], tick_labels: string[]): LabelData[];
    draw(opts: {
        context: {
            renderPass: RenderPass;
        };
    }): void;
    _getModels(fontTexture: UniformValue): {
        labelModels: Model[];
        lineModel: Model;
        backgroundModel: Model;
    };
}
export {};
