import type { PickingInfo } from "@deck.gl/core";
import { type UpdateParameters } from "@deck.gl/core";
import type { Feature, Position } from "geojson";
import type { Point3D } from "../../../utils";
import type { WellFeature } from "../types";
import type { MergedTextLayerProps } from "./mergedTextLayer";
import { MergedTextLayer } from "./mergedTextLayer";
type WellLabelLayerData = WellFeature;
/**
 * Enum representing the orientation of well labels.
 */
export declare enum LabelOrientation {
    /**
     * Horizontal orientation.
     */
    HORIZONTAL = "horizontal",
    /**
     * Tangent to well trajectory orientation.
     */
    TANGENT = "tangent"
}
/**
 * Properties for the WellLabelLayer component.
 */
export type WellLabelLayerProps = MergedTextLayerProps<WellLabelLayerData> & {
    /**
     * Automatically reposition the label if it is outside the view.
     */
    autoPosition?: boolean;
    /**
     * Accessor function or value for getting the fractional position
     * along the path, [0, 1].
     */
    getPositionAlongPath?: number | ((d: Feature) => number);
    /**
     * Orientation of the label.
     */
    orientation?: LabelOrientation;
    /**
     * If true, then z values are depth. Otherwise, z values are elevation.
     */
    zIncreasingDownwards?: boolean;
};
/**
 * The `WellLabelLayer` class extends the `MergedTextLayer` to provide functionality for rendering well
 * labels in a subsurface viewer. It includes methods for calculating label positions and angles based
 * on well trajectory data and the current viewport.
 *
 * @template WellLabelLayerData - The data type for the well label layer.
 * @template WellLabelLayerProps - The properties type for the well label layer.
 */
export declare class WellLabelLayer extends MergedTextLayer<WellLabelLayerData, WellLabelLayerProps> {
    protected getSubLayerProps(sublayerProps?: {
        id?: string;
        updateTriggers?: Record<string, unknown[]>;
        [propName: string]: unknown;
    }): any;
    shouldUpdateState(params: UpdateParameters<this>): boolean;
    updateState(params: UpdateParameters<this>): void;
    protected getLabelAngle(well: WellFeature): number;
    /**
     * Get the position of the annotation
     * @param well_data Well trajectory
     * @param annotationPosition position of the annotation along the trajectory
     * @returns world position of the annotation
     */
    protected getAnnotationPosition(well_data: WellFeature, annotationPosition: WellLabelLayerProps["getPositionAlongPath"]): Position;
    /**
     * Get angle and position at a given fraction down the trajectory.
     * @param fraction Fraction down the trajectory [0, 1]
     * @param wellData Well trajectory
     */
    protected getVectorAlongTrajectory(fraction: number, wellData: WellFeature): [number, Point3D];
    getPickingInfo({ info }: {
        info: PickingInfo;
    }): {
        color: Uint8Array | null;
        layer: import("@deck.gl/core").Layer | null;
        sourceLayer?: import("@deck.gl/core").Layer | null;
        viewport?: import("@deck.gl/core").Viewport;
        index: number;
        picked: boolean;
        object?: any;
        x: number;
        y: number;
        pixel?: [number, number];
        coordinate?: number[];
        devicePixel?: [number, number];
        pixelRatio: number;
    };
}
export {};
